НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
49 of 182 menu

Таблица 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,
    которая хранит статистику комментариев для нод
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить