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

Таблица comment__body

Таблица comment__body является де-нормализованной таблицей для хранения основного содержимого комментариев (тела комментария) в Drupal. Она создается и управляется модулем Field SQL Storage при добавлении поля типа text (long) с названием body к типу сущности Comment. Таблица поддерживает хранение нескольких ревизий и переводов для каждого комментария.

Поля

Поле Тип данных Описание
bundle varchar(128) Тип поля (бандл), к которому привязано данное поле. Для стандартного поля тела комментария обычно имеет значение comment.
deleted int Флаг удаления поля: 0 - поле активно, 1 - поле удалено. Позволяет безопасно удалять поля без физического удаления данных из БД.
entity_id int Идентификатор комментария (cid), к которому относится данное тело. Внешний ключ к таблице comment.
revision_id int Идентификатор ревизии комментария. Внешний ключ к таблице comment_revision. Совпадает с entity_id для текущей ревизии.
langcode varchar(32) Код языка, для которого предназначено данное содержимое (например, en, ru). Позволяет хранить переводы содержимого комментария.
delta int Порядковый номер элемента, если поле допускает множественные значения. Для стандартного поля body обычно равен 0.
body_value longtext Основное содержимое тела комментария в необработанном виде (сырой текст).
body_summary longtext Опциональное краткое изложение (аннотация) содержимого комментария. Может генерироваться автоматически или заполняться вручную.
body_format varchar(255) Идентификатор формата текстового фильтра (например, basic_html, full_html), который применяется к содержимому. Внешний ключ к таблице filter_format.

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

При создании или редактировании комментария пользователь вводит текст в поле тела комментария. Drupal сохраняет этот текст в таблицу comment__body, связывая его с ID комментария (entity_id) и его ревизии (revision_id).

Если для сайта включено многоязычие и создается перевод комментария, для одного и того же entity_id будет создана дополнительная запись с другим langcode, содержащая переведенный текст.

При выводе комментария система загружает запись из comment__body по entity_id и текущему языку, применяет к значению body_value текстовые фильтры, указанные в body_format, и отображает отфильтрованный HTML.

Структура с отдельной таблицей для каждого поля (как comment__body) является частью архитектуры полей Drupal и обеспечивает гибкость в добавлении, изменении и удалении полей без изменения структуры базовой таблицы сущности (comment).

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

Выбрать основные данные комментариев вместе с их телами для русского языка:

SELECT c.cid, c.subject, cb.body_value, cb.body_format FROM comment c INNER JOIN comment__body cb ON c.cid = cb.entity_id AND cb.deleted = 0 WHERE cb.langcode = 'ru' ORDER BY c.created DESC;

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

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