Таблица field_data_body
Таблица field_data_body является частью системы полей (Field API) в Drupal и служит для хранения данных поля body. Это поле, обычно добавляемое к типам материалов (нодам) по умолчанию, предназначено для хранения основного текстового содержимого с возможностью форматирования. Таблица содержит все версии данных для каждой сущности, включая переводы, и является одной из основных таблиц данных для этого поля.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
entity_type |
varchar(128) |
Тип сущности, к которой прикреплено поле. Например, node для материалов, taxonomy_term для терминов словаря.
|
bundle |
varchar(128) |
Название типа (подтипа) сущности, в котором объявлено это поле. Например, article или page для нод.
|
deleted |
int |
Флаг, указывающий, удалено ли поле из данного типа сущности (1) или нет (0). Данные для удаленных полей сохраняются в таблице для возможного восстановления.
|
entity_id |
int |
Уникальный идентификатор (ID) сущности, к которой принадлежит данное значение поля. Ссылается на базовую таблицу сущности (например, node.nid).
|
revision_id |
int |
Идентификатор ревизии сущности, если сущность поддерживает версионность (как ноды). Для сущностей без версий равен entity_id.
|
language |
varchar(32) |
Языковой код (например, und для неопределенного языка, ru, en), для которого предназначено это значение поля. Поддерживает многоязычность.
|
delta |
int |
Порядковый номер значения в случае, если поле допускает множественные значения. Начинается с 0.
|
body_value |
longtext |
Основное значение поля - сам текст тела содержимого. |
body_summary |
longtext |
Необязательное краткое изложение (анонс) текста. Может генерироваться автоматически или заполняться вручную. |
body_format |
varchar(255) |
Идентификатор формата текстового фильтра (например, full_html, filtered_html, plain_text), примененного к данному тексту. Ссылается на таблицу filter_format.
|
Как это работает
Когда создается новый тип материала (нода) с полем body, Drupal автоматически создает таблицу field_data_body (если она еще не создана) для хранения его данных. При сохранении сущности её данные записываются в эту таблицу.
Структура таблицы является общей для всех полей Drupal. Поля entity_type, bundle и deleted определяют контекст использования поля. Поля entity_id и language однозначно идентифицируют сущность и её языковую версию. Поле delta позволяет хранить несколько значений для одного поля.
Основное содержимое хранится в поле body_value. Форматирование этого текста определяется форматом фильтра, указанным в body_format. При отображении ноды Drupal берет текст из body_value и применяет к нему фильтры, соответствующие выбранному формату.
Важно отметить, что эта таблица является таблицей ⁅i⁆данных⁅/i⁆. Для описания самого поля (его настроек, привязки к типам сущностей) используются другие таблицы, такие как field_config и field_config_instance.
Пример SQL-запроса
Получить основной текст и формат для определенной ноды можно следующим запросом:
SELECT body_value, body_format
FROM field_data_body
WHERE entity_type = 'node'
AND entity_id = 123
AND language = 'ru';
Получить заголовок и тело для последних 10 опубликованных статей:
SELECT n.title, fdb.body_value, fdb.body_summary
FROM node n
INNER JOIN field_data_body fdb ON n.nid = fdb.entity_id AND fdb.entity_type = 'node'
WHERE n.type = 'article'
AND n.status = 1
ORDER BY n.created DESC
LIMIT 10;
Смотрите также
-
таблицу
node,
которая хранит основную информацию о материалах -
таблицу
field_revision_body,
которая хранит историю изменений поля body -
таблицу
field_config,
которая хранит настройки поля body -
таблицу
filter_format,
которая определяет форматы текстовых фильтров