Таблица field_revision_body
Таблица field_revision_body является частью системы полей Drupal и предназначена для хранения всех ревизий содержимого поля body. Это поле обычно используется для основного текстового содержимого нод (материалов), комментариев и других сущностей. Каждое изменение поля создает новую запись в этой таблице, что позволяет отслеживать историю изменений и возвращаться к предыдущим версиям.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
entity_type |
varchar(128) |
Тип сущности, к которой относится поле. Например: node (материал), comment (комментарий).
|
bundle |
varchar(128) |
Название типа материала (например: article, page) или пучка сущности, к которому относится поле.
|
deleted |
int |
Флаг, указывающий на удаление данных поля: 0 - не удалено, 1 - удалено.
|
entity_id |
int |
Уникальный идентификатор (ID) сущности (например, ноды или комментария), к которой относится данная ревизия поля. |
revision_id |
int |
Уникальный идентификатор ревизии сущности. Связывает запись с соответствующей ревизией в базовой таблице сущности (например, node_revision).
|
language |
varchar(32) |
Языковой код содержимого (например, und для неопределенного языка, ru, en).
|
delta |
int |
Порядковый номер (индекс) значения в случае, если поле допускает множественные значения. Для одинарных полей всегда 0.
|
body_value |
longtext |
Основное содержимое поля "Тело" в необработанном HTML или простом тексте, в зависимости от настроек поля. |
body_summary |
longtext |
Необязательное краткое изложение (аннотация) основного содержимого. Может генерироваться автоматически или заполняться вручную. |
body_format |
varchar(255) |
Идентификатор формата текстового фильтра (например, full_html, basic_html, plain_text), примененного к содержимому. Ссылается на таблицу filter_format.
|
Как это работает
Когда для типа материала включено отслеживание ревизий и создается новый материал или обновляется существующий, Drupal создает запись в таблице node_revision. Одновременно с этим для каждого версионируемого поля, включая body, создается соответствующая запись в его таблице ревизий (field_revision_%).
Поле body_value хранит основной контент. Поле body_format определяет, какие фильтры обработки текста должны быть применены к этому контенту при его выводе на страницу. Это обеспечивает безопасность (например, фильтрация нежелательных тегов) и правильное форматирование.
Администраторы и пользователи с соответствующими правами могут просматривать историю изменений поля body и при необходимости восстанавливать предыдущие версии. Механизм ревизий критически важен для многопользовательских сайтов, где над контентом работает несколько человек, а также для соблюдения требований к аудиту изменений.
Важно различать таблицы field_data_body (текущая версия поля, используемая по умолчанию) и field_revision_body (все версии). При запросе актуальных данных для отображения на сайте Drupal в первую очередь обращается к таблице данных.
Пример SQL-запроса
Получить все ревизии тела для конкретного материала (ноды) можно следующим запросом:
SELECT fr.revision_id, fr.body_value, fr.body_summary, fr.body_format, nr.title, nr.log
FROM field_revision_body fr
INNER JOIN node_revision nr ON fr.revision_id = nr.vid
WHERE fr.entity_id = 42
AND fr.entity_type = 'node'
ORDER BY fr.revision_id DESC;
Смотрите также
-
таблицу
field_data_body,
которая хранит актуальные версии данных поля body -
таблицу
node_revision,
которая хранит основные метаданные ревизий материалов -
таблицу
node,
которая является основной таблицей для хранения материалов (нод) -
таблицу
filter_format,
которая определяет форматы фильтрации текстового содержимого