Таблица comments
Таблица comments является ядром системы комментирования в Drupal. Каждая запись в этой таблице представляет собой отдельный комментарий, привязанный к определённому материалу (ноде) и, опционально, к другому комментарию (для создания иерархических веток обсуждения).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
serial |
Первичный ключ, уникальный идентификатор комментария (Comment ID). |
pid |
int |
Идентификатор родительского комментария (Parent ID). Равен 0, если комментарий является корневым (не ответом на другой комментарий). Ссылается на comments.cid.
|
nid |
int |
Идентификатор ноды, к которой оставлен комментарий. Внешний ключ для таблицы node.
|
uid |
int |
Идентификатор пользователя (автора комментария). Равен 0 для анонимных пользователей. Внешний ключ для таблицы users.
|
subject |
varchar(64) |
Заголовок комментария. |
hostname |
varchar(128) |
IP-адрес пользователя, оставившего комментарий. Для анонимных пользователей это основная информация для идентификации. |
created |
int |
Временная метка (timestamp) создания комментария. |
changed |
int |
Временная метка (timestamp) последнего изменения комментария. |
status |
int |
Статус комментария. 0 - неопубликован, 1 - опубликован, 2 - на модерации.
|
thread |
varchar(255) |
Строка, определяющая положение комментария в иерархической ветке обсуждения. Использует формат типа 01/, 01.01/ для упорядочивания и отображения древовидной структуры.
|
name |
varchar(60) |
Имя анонимного пользователя. Если комментарий оставил зарегистрированный пользователь (uid > 0), это поле должно быть NULL.
|
mail |
varchar(64) |
E-mail анонимного пользователя. Для зарегистрированных пользователей это поле должно быть NULL.
|
homepage |
varchar(255) |
Домашняя страница (URL) анонимного пользователя. |
Как это работает
Когда пользователь оставляет комментарий к материалу (ноде), в таблицу comments создается новая запись. Система заполняет поле nid ID соответствующей ноды, устанавливает uid (или оставляет 0 для анонимов, заполняя при этом name и mail) и записывает текущее время в created.
Если комментарий является ответом на существующий, в поле pid проставляется cid родительского комментария. Система генерирует значение для поля thread, которое определяет позицию нового комментария в общей иерархии ветки обсуждений. Это позволяет эффективно выбирать и сортировать комментарии деревом без рекурсивных SQL-запросов.
Поле status управляет видимостью комментария. В зависимости от настроек сайта комментарии могут публиковаться сразу (статус 1) или отправляться на предварительную модерацию (статус 0 или 2).
Важно отметить, что сам текст комментария не хранится в этой таблице. Содержимое комментария, как и любого другого контента в Drupal, хранится в таблице field_data_comment_body, а данная таблица содержит только метаданные.
Пример SQL-запроса
Выбрать все опубликованные комментарии для конкретной ноды вместе с именами авторов:
SELECT c.cid, c.subject, c.created, u.name as author_name, c.thread
FROM comments c
LEFT JOIN users u ON c.uid = u.uid
WHERE c.nid = 42
AND c.status = 1
ORDER BY c.thread;
Смотрите также
-
таблицу
node,
которая хранит основные данные материалов (нод) -
таблицу
field_data_comment_body,
которая хранит непосредственно текст комментариев -
таблицу
users,
которая содержит данные пользователей-авторов комментариев -
таблицу
comment_entity_statistics,
которая хранит статистику комментариев для нод