Таблица comment
Таблица comment является основной таблицей для хранения комментариев в Drupal. Она содержит всю информацию о каждом комментарии: автора, содержание, статус публикации, привязку к материалу и связь с родительским комментарием для организации древовидной структуры обсуждений.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
int |
Уникальный идентификатор комментария. Первичный ключ, автоинкремент. |
comment_type |
varchar(255) |
Тип комментария (машинное имя). Определяет, к какому типу содержимого относится комментарий. |
uuid |
varchar(128) |
Уникальный универсальный идентификатор комментария (UUID). |
langcode |
varchar(12) |
Код языка, на котором написан комментарий. |
status |
tinyint |
Статус публикации комментария: 0 - не опубликован, 1 - опубликован.
|
uid |
int |
Идентификатор пользователя, создавшего комментарий. Внешний ключ для таблицы users. Может быть 0 для анонимных комментариев.
|
pid |
int |
Идентификатор родительского комментария. Внешний ключ для этой же таблицы (comment). Значение 0 означает, что это комментарий верхнего уровня.
|
entity_id |
int |
Идентификатор материала (ноды), к которому относится комментарий. Внешний ключ для таблицы node.
|
subject |
varchar(255) |
Заголовок комментария. |
created |
int |
Временная метка создания комментария (Unix timestamp). |
changed |
int |
Временная метка последнего изменения комментария (Unix timestamp). |
thread |
varchar(255) |
Строка, представляющая иерархический путь комментария в древовидной структуре. Используется для эффективного упорядочивания комментариев. |
entity_type |
varchar(255) |
Тип сущности, к которой привязан комментарий. Обычно имеет значение node.
|
field_name |
varchar(255) |
Название поля, к которому привязан комментарий. |
default_langcode |
tinyint |
Флаг, указывающий является ли язык комментария языком по умолчанию: 0 - нет, 1 - да.
|
Как это работает
Когда пользователь оставляет комментарий к материалу, в таблице comment создается новая запись. Поле entity_id связывает комментарий с конкретным материалом (нодой), а поле uid - с автором комментария.
Для организации вложенных комментариев используется поле pid, которое ссылается на cid родительского комментария. Если pid равен 0, это означает, что комментарий является корневым в ветке обсуждения.
Поле thread содержит специально сформированную строку, которая отражает позицию комментария в иерархии. Это позволяет эффективно сортировать и отображать древовидную структуру комментариев без рекурсивных SQL-запросов.
Статус комментария (опубликован или нет) управляется через поле status. Администраторы могут модерировать комментарии, изменяя это значение.
Содержимое комментария (текст) хранится не в этой таблице, а в связанных таблицах полей, обычно в comment__body, так как Drupal использует систему полей для хранения контента.
Пример SQL-запроса
Получить все опубликованные комментарии к конкретной ноде с информацией об авторах:
SELECT c.cid, c.subject, c.created, u.uid, u.name as username, cb.body_value
FROM comment c
INNER JOIN users u ON c.uid = u.uid
INNER JOIN comment__body cb ON c.cid = cb.entity_id
WHERE c.entity_id = 123
AND c.entity_type = 'node'
AND c.status = 1
ORDER BY c.thread;
Смотрите также
-
таблицу
node,
которая хранит материалы (ноды) сайта -
таблицу
users,
которая содержит данные пользователей -
таблицу
comment__body,
которая хранит основное содержимое комментариев -
таблицу
comment_field_data,
которая содержит дополнительные данные комментариев