НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
16 of 182 menu

Таблица node_revision__body

Таблица node_revision__body является частью системы ревизий контента в Drupal и хранит историю изменений основного текстового содержимого (поля body) для всех типов материалов. Каждое изменение поля создает новую запись в этой таблице, связанную с конкретной ревизией ноды.

Поля

Поле Тип данных Описание
bundle varchar(128) Тип материала (ноды), к которому относится данное поле. Например: article, page.
deleted tinyint Флаг, указывающий на удаление данных поля: 0 - запись активна, 1 - запись удалена.
entity_id int Идентификатор материала (ноды), к которому относится данная ревизия поля. Внешний ключ для таблицы node.
revision_id int Идентификатор ревизии материала. Внешний ключ для таблицы node_revision.
langcode varchar(32) Код языка, для которого сохранено значение поля.
delta int Порядковый номер значения для полей с множественным значением. Для одиночных полей всегда равен 0.
body_value longtext Основное значение поля - текст в отформатированном виде.
body_format varchar(255) Идентификатор формата текста (текстовый фильтр), который был применен к значению. Ссылается на таблицу filter_format.
body_summary longtext Необязательное краткое изложение (аннотация) основного текста.

Как это работает

При создании или редактировании материала Drupal создает новую ревизию, если это настроено для данного типа контента. Для поля body это означает создание новой записи в таблице node_revision__body, где revision_id соответствует ID новой ревизии из таблицы node_revision, а entity_id - ID самого материала.

Текущая (активная) ревизия поля определяется по связи с текущей ревизией ноды в таблице node (поле vid). Все остальные ревизии поля считаются историческими и используются для отслеживания изменений и возможности отката.

Система использует комбинацию полей entity_id, revision_id и langcode для однозначной идентификации конкретной ревизии перевода поля для определенного материала.

При удалении материала или его ревизии соответствующие записи в этой таблице не удаляются физически, а помечаются флагом deleted = 1. Это позволяет реализовать корзину контента и корректное удаление данных при выполнении cron.

Пример SQL-запроса

Получить историю изменений основного текста для конкретного материала можно следующим запросом:

SELECT nr.vid, nr.revision_created, nrb.body_value, nrb.body_format FROM node_revision__body nrb INNER JOIN node_revision nr ON nrb.revision_id = nr.vid WHERE nrb.entity_id = 42 AND nrb.deleted = 0 ORDER BY nr.revision_created DESC;

Смотрите также

  • таблицу node,
    которая хранит основные данные материалов
  • таблицу node_revision,
    которая хранит ревизии материалов
  • таблицу node_field_data,
    которая хранит данные полей для текущих ревизий
  • таблицу node_field_revision,
    которая хранит ревизии данных полей материалов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить