Таблица comment_field_revision
Таблица comment_field_revision является ключевым компонентом системы управления версиями комментариев в Drupal. Она содержит все ревизии полей для каждого комментария, что позволяет отслеживать историю изменений, восстанавливать предыдущие версии и обеспечивать целостность данных при работе с переводами.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
int |
Идентификатор комментария. Внешний ключ к таблице comment.
|
comment_type |
varchar(32) |
Тип комментария (бандл). Ссылается на тип комментария, определенный в системе. |
langcode |
varchar(12) |
Код языка, для которого предназначена данная ревизия комментария. |
status |
tinyint |
Статус комментария: 0 - неопубликован, 1 - опубликован.
|
subject |
varchar(255) |
Заголовок комментария. |
uid |
int |
Идентификатор пользователя, создавшего комментарий. Внешний ключ к таблице users.
|
created |
int |
Временная метка создания комментария в формате UNIX timestamp. |
changed |
int |
Временная метка последнего изменения комментария в формате UNIX timestamp. |
default_langcode |
tinyint |
Флаг, указывающий является ли данная ревизия ревизией для языка по умолчанию: 0 - нет, 1 - да.
|
revision_id |
int |
Уникальный идентификатор ревизии. Первичный ключ таблицы. |
revision_created |
int |
Временная метка создания ревизии в формате UNIX timestamp. |
revision_user |
int |
Идентификатор пользователя, создавшего ревизию. Внешний ключ к таблице users.
|
revision_log_message |
longtext |
Сообщение журнала изменений, описывающее причину создания данной ревизии. |
Как это работает
Таблица comment_field_revision работает в тесной связке с таблицей comment_revision. В то время как comment_revision хранит базовую информацию о ревизиях, comment_field_revision содержит все поля, включая пользовательские поля, для каждой ревизии.
При каждом изменении комментария создается новая ревизия, которая записывается в обе таблицы. Это позволяет системе хранить полную историю изменений каждого комментария и при необходимости восстанавливать предыдущие версии.
Поле langcode обеспечивает поддержку многоязычности. Для каждого языка может существовать своя ревизия полей комментария, что позволяет иметь разные версии контента для разных языков.
Поле default_langcode указывает, является ли данная ревизия ревизией для языка по умолчанию. Это важно для корректного отображения контента при переключении между языками.
Пример SQL-запроса
Получить все ревизии для конкретного комментария можно следующим запросом:
SELECT cfr.*, u.name as username
FROM comment_field_revision cfr
LEFT JOIN users u ON cfr.uid = u.uid
WHERE cfr.cid = 123
ORDER BY cfr.revision_created DESC;
Смотрите также
-
таблицу
comment,
которая содержит основные данные комментариев -
таблицу
comment_revision,
которая хранит информацию о ревизиях комментариев -
таблицу
comment__field_tags,
которая хранит значения поля тегов комментариев -
таблицу
comment_entity_statistics,
которая содержит статистику комментариев для сущностей