Таблица node__comment
Таблица node__comment является частью системы полей Drupal и предназначена для хранения метаданных о комментариях, связанных с материалами (нодами). Она не хранит сами комментарии (для этого используется таблица comment), а содержит информацию о количестве комментариев и последнем добавленном комментарии для каждой ноды. Эта таблица автоматически обновляется ядром Drupal при добавлении, изменении или удалении комментариев.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип материала (ноды), к которому привязаны комментарии. Ссылается на тип материала, например article или page.
|
deleted |
tinyint |
Флаг удаления записи. 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор ноды (материала), к которой относятся комментарии. Внешний ключ, ссылается на таблицу node.
|
revision_id |
int |
Идентификатор ревизии ноды. Внешний ключ, ссылается на таблицу node_revision.
|
langcode |
varchar(32) |
Код языка, для которого предназначены комментарии. |
delta |
int |
Порядковый номер (дельта) для случаев, когда к одному материалу привязано несколько полей с комментариями. |
comment_status |
int |
Статус комментариев для материала. 0 - скрыты, 1 - открыты, 2 - закрыты.
|
comment_count |
int |
Общее количество комментариев, привязанных к данной ноде. |
last_comment_timestamp |
int |
Временная метка Unix времени создания последнего комментария. |
last_comment_name |
varchar(60) |
Имя автора последнего комментария (для анонимных пользователей). |
last_comment_uid |
int |
Идентификатор пользователя, оставившего последний комментарий. Внешний ключ, ссылается на таблицу users.
|
cid |
int |
Идентификатор последнего комментария. Внешний ключ, ссылается на таблицу comment.
|
Как это работает
Когда на сайте Drupal создается материал (нода) с включенной поддержкой комментариев, в таблице node__comment автоматически создается запись. При добавлении первого комментария к материалу система обновляет поля comment_count, last_comment_timestamp, last_comment_uid и cid.
Эта таблица оптимизирована для быстрого получения информации о комментариях без необходимости выполнять ресурсоемкие JOIN-запросы к таблице comment. Например, при выводе списка материалов часто требуется показать количество комментариев к каждому материалу - эта информация берется непосредственно из node__comment.
Поле comment_status позволяет управлять статусом комментариев для каждого материала индивидуально. Администратор может закрыть комментарии для конкретной статьи, даже если для типа материала в целом комментарии разрешены.
Важно отметить, что таблица node__comment является дельта-таблицей системы полей Drupal и работает в связке с основной таблицей node. Данные в этой таблице автоматически поддерживаются в актуальном состоянии ядром Drupal через систему хуков и событий.
Пример SQL-запроса
Получить список материалов с количеством комментариев и информацией о последнем комментаторе можно следующим запросом:
SELECT n.nid, n.title, nc.comment_count,
FROM_UNIXTIME(nc.last_comment_timestamp) as last_comment_date,
u.name as last_comment_author
FROM node n
INNER JOIN node__comment nc ON n.nid = nc.entity_id
LEFT JOIN users u ON nc.last_comment_uid = u.uid
WHERE nc.comment_count > 0
ORDER BY nc.last_comment_timestamp DESC;
Смотрите также
-
таблицу
comment,
которая хранит непосредственно комментарии -
таблицу
node,
которая содержит основные данные материалов -
таблицу
node_revision,
которая хранит ревизии материалов -
таблицу
users,
которая содержит данные пользователей