Таблица node__body
Таблица node__body является дефолтным хранилищем для содержимого поля body, которое автоматически добавляется к типам материалов (нод) в Drupal. Эта таблица создается и управляется системой полей Drupal и хранит все версии текста, включая переводы и ревизии.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип материала (ноды), к которому относится данное тело. Например: article, page.
|
deleted |
tinyint |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор материала (ноды), с которым связано данное тело. Внешний ключ к node.nid.
|
revision_id |
int |
Идентификатор ревизии материала. Внешний ключ к node_revision.vid.
|
langcode |
varchar(32) |
Код языка, для которого предназначено данное содержимое (например, en, ru).
|
delta |
int |
Порядковый номер значения, если у поля разрешено множественное значение. По умолчанию 0.
|
body_value |
longtext |
Основное содержимое тела материала в необработанном HTML или текстовом формате. |
body_summary |
longtext |
Необязательное краткое изложение (анонс) содержимого тела. |
body_format |
varchar(255) |
Идентификатор формата текстового фильтра, примененного к содержимому (например, basic_html, full_html). Внешний ключ к filter_format.format.
|
Как это работает
При создании или редактировании материала пользователь вводит текст в основное поле тела. Drupal сохраняет это значение в таблицу node__body. Если включено управление ревизиями, при каждом обновлении материала создается новая запись в этой таблице с новым revision_id, что позволяет отслеживать историю изменений.
При отображении материала Drupal выполняет запрос к этой таблице, чтобы получить актуальное значение поля body_value для текущего языка и применяет к нему текстовый фильтр, указанный в body_format.
Структура таблицы является стандартной для полей в Drupal. Поле deleted позволяет "мягко" удалять данные, которые еще могут быть нужны для ревизий или в корзине. Поле delta позволяет хранить несколько значений для одного поля, если это разрешено в настройках поля.
Пример SQL-запроса
Получить основной текст и анонс для определенного материала можно следующим запросом:
SELECT nb.body_value, nb.body_summary, f.name as format_name
FROM node__body nb
INNER JOIN filter_format f ON nb.body_format = f.format
WHERE nb.entity_id = 42 AND nb.deleted = 0 AND nb.langcode = 'ru'
ORDER BY nb.delta;
Смотрите также
-
таблицу
node,
которая хранит основную информацию о материалах -
таблицу
node_revision,
которая хранит ревизии материалов -
таблицу
node_field_data,
которая хранит переводимые данные материалов -
таблицу
filter_format,
которая определяет форматы текстовых фильтров