Таблица block_content_field_revision
Таблица block_content_field_revision является центральным хранилищем данных полей для всех ревизий пользовательских блоков в Drupal. Она работает в связке с основной таблицей block_content_revision, которая содержит метаинформацию о ревизиях.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
int |
Идентификатор блока. Внешний ключ к таблице block_content.
|
revision_id |
int |
Идентификатор ревизии. Внешний ключ к таблице block_content_revision. Вместе с id образует первичный ключ.
|
langcode |
varchar(12) |
Код языка, для которого предназначены данные в этой строке. |
status |
tinyint |
Статус публикации ревизии: 1 - опубликована, 0 - не опубликована.
|
info |
varchar(255) |
Название или описание блока, отображаемое в административном интерфейсе. |
changed |
int |
Время последнего изменения ревизии в формате UNIX timestamp. |
default_langcode |
tinyint |
Флаг, указывающий является ли этот язык языком по умолчанию для ревизии: 1 - да, 0 - нет.
|
Как это работает
Drupal использует систему ревизий для отслеживания истории изменений контента. Каждый раз, когда пользователь редактирует и сохраняет пользовательский блок, создается новая ревизия. Данные полей этой ревизии сохраняются в таблице block_content_field_revision.
Структура таблицы следует шаблону Drupal для ревизионных полевых данных. Поля id и revision_id вместе образуют составной первичный ключ, что позволяет хранить несколько ревизий для одного блока.
Многоязычная поддержка реализована через поле langcode. Для каждого языка создается отдельная запись в таблице, что позволяет иметь разные версии контента для разных языков.
Поле status определяет, является ли ревизия опубликованной. Toлько одна ревизия блока может иметь статус 1 (опубликована) в данный момент времени.
Когда пользователь просматривает историю изменений блока, система извлекает данные из этой таблицы, чтобы показать содержимое каждой ревизии.
Пример SQL-запроса
Получить все ревизии для конкретного блока можно следующим запросом:
SELECT r.revision_id, r.revision_created, f.info, f.status, f.changed
FROM block_content_field_revision f
JOIN block_content_revision r ON f.revision_id = r.revision_id
WHERE f.id = 15
ORDER BY r.revision_created DESC;
Смотрите также
-
таблицу
block_content,
которая хранит основную информацию о пользовательских блоках -
таблицу
block_content_revision,
которая содержит метаданные ревизий блоков -
таблицу
block_content_field_data,
которая хранит опубликованные данные полей блоков -
таблицу
node_field_revision,
которая выполняет аналогичную функцию для ревизий материалов