Таблица field_revision_field_data
Таблица field_revision_field_data является частью системы полей Drupal и предназначена для хранения ревизий данных полей. В отличие от основной таблицы field_data_field_data, которая содержит только текущие (активные) версии данных, эта таблица сохраняет все исторические версии значений полей, что позволяет реализовать функционал управления ревизиями контента.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
entity_type |
varchar(128) |
Тип сущности, к которой относится поле (например, node, user, taxonomy_term).
|
bundle |
varchar(128) |
Название бандла (типа материала) сущности, к которой относится поле. |
deleted |
int |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор сущности, к которой относится поле. Внешний ключ к основной таблице сущности. |
revision_id |
int |
Идентификатор ревизии сущности. Внешний ключ к таблице ревизий сущности. |
language |
varchar(32) |
Язык содержимого поля (например, und для неопределенного языка, en, ru).
|
delta |
int |
Порядковый номер значения для полей с множественными значениями (начинается с 0).
|
field_data_value |
longtext |
Основное значение поля (текстовые данные). |
field_data_format |
varchar(255) |
Идентификатор формата текстового значения. Ссылается на таблицу filter_format.
|
Как это работает
Когда в Drupal включено управление ревизиями для определенного типа контента, система сохраняет каждую версию изменений. При создании новой ревизии узла (ноды) или другой сущности, все значения полей также сохраняются в соответствующих таблицах ревизий полей.
Таблица field_revision_field_data хранит исторические версии текстовых полей. Каждая запись связана с конкретной ревизией сущности через поля entity_type, entity_id и revision_id. Это позволяет откатываться к предыдущим версиям контента и просматривать историю изменений.
Система использует комбинацию entity_id + revision_id + language + delta в качестве уникального идентификатора для каждого значения поля в каждой ревизии.
Поле deleted помечает записи, которые были удалены из текущей ревизии, но сохраняются для истории. Это важно для корректного отображения предыдущих версий контента.
Пример SQL-запроса
Получить все ревизии текстового поля для определенной ноды:
SELECT frfd.revision_id, frfd.delta, frfd.field_data_value, frfd.field_data_format
FROM field_revision_field_data frfd
WHERE frfd.entity_type = 'node'
AND frfd.entity_id = 123
AND frfd.deleted = 0
ORDER BY frfd.revision_id DESC, frfd.delta ASC;
Смотрите также
-
таблицу
field_data_field_data,
которая хранит текущие версии данных полей -
таблицу
node,
которая содержит основные данные нод -
таблицу
node_revision,
которая хранит ревизии нод -
таблицу
file_managed,
которая управляет файлами в Drupal