Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
6 of 182 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица 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,
    которая определяет форматы текстовых фильтров