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

Таблица comment_field_data

Таблица comment_field_data является основной таблицей для хранения данных комментариев в Drupal. Она содержит обработанные и готовые для отображения данные, в отличие от таблицы comment, которая хранит базовую структурную информацию. Эта таблица автоматически обновляется при изменении любых данных комментария.

Поля

Поле Тип данных Описание
cid int Уникальный идентификатор комментария. Первичный ключ, ссылается на comment.cid.
comment_type varchar(32) Тип комментария (бандл). Определяет, к какому типу контента принадлежит комментарий.
langcode varchar(12) Языковой код комментария. Определяет язык, на котором написан комментарий.
status tinyint Статус публикации комментария: 1 - опубликован, 0 - не опубликован.
uid int Идентификатор пользователя, который создал комментарий. Ссылается на users.uid.
pid int Идентификатор родительского комментария (если есть). Для древовидной структуры комментариев. Ссылается на comment.cid.
entity_id int Идентификатор сущности (ноды), к которой оставлен комментарий. Ссылается на node_field_data.nid.
subject varchar(255) Заголовок комментария.
name varchar(60) Имя автора комментария (если комментарий оставлен анонимным пользователем).
mail varchar(254) Email автора комментария (для анонимных пользователей).
homepage varchar(255) Домашняя страница автора комментария (для анонимных пользователей).
hostname varchar(128) IP-адрес или хост автора комментария.
created int Временная метка создания комментария (Unix timestamp).
changed int Временная метка последнего изменения комментария (Unix timestamp).
thread varchar(255) Строка, определяющая положение комментария в древовидной структуре. Используется для сортировки вложенных комментариев.
entity_type varchar(32) Тип сущности, к которой прикреплен комментарий (обычно node).
field_name varchar(32) Название поля, к которому прикреплен комментарий.
default_langcode tinyint Флаг, указывающий является ли язык комментария языком по умолчанию: 1 - да, 0 - нет.

Как это работает

Когда пользователь оставляет комментарий к материалу (ноде), система создает запись в базовой таблице comment, а затем обновляет таблицу comment_field_data, где хранятся все обработанные данные для отображения. Эта таблица оптимизирована для запросов на выборку комментариев.

Поле thread использует специальный формат (например, 01/, 01/01/, 01/02/) для организации древовидной структуры комментариев. Это позволяет эффективно сортировать и отображать вложенные комментарии без рекурсивных SQL-запросов.

Для анонимных пользователей данные сохраняются в полях name, mail и homepage. Для зарегистрированных пользователей эти поля обычно пустые, а информация об авторе берется из таблицы пользователей через uid.

Статус комментария (status) управляет видимостью комментария на сайте. Комментарии со статусом 0 не отображаются для обычных пользователей до тех пор, пока не будут одобрены модератором.

Пример SQL-запроса

Получить все опубликованные комментарии для конкретной ноды с информацией об авторах:

SELECT cfd.cid, cfd.subject, cfd.created, u.uid, u.name as username, nfd.title as node_title FROM comment_field_data cfd INNER JOIN users_field_data u ON cfd.uid = u.uid INNER JOIN node_field_data nfd ON cfd.entity_id = nfd.nid WHERE cfd.entity_id = 123 AND cfd.status = 1 ORDER BY cfd.created DESC;

Смотрите также

  • таблицу comment,
    которая содержит базовую структурную информацию о комментариях
  • таблицу comment__comment_body,
    которая хранит основной текст комментариев
  • таблицу node_field_data,
    которая содержит данные материалов (нод), к которым оставляются комментарии
  • таблицу users_field_data,
    которая хранит данные пользователей - авторов комментариев
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить