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

Таблица field_revision_field_data

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

Поля

Поле Тип данных Описание
entity_type varchar(128) Тип сущности, к которой принадлежит поле (например, node, user, taxonomy_term).
bundle varchar(128) Название бандла (типа материала) сущности, к которому привязано поле.
deleted int Флаг удаления: 0 - запись активна, 1 - запись удалена.
entity_id int Идентификатор сущности, к которой принадлежит поле. Внешний ключ к базовой таблице сущности.
revision_id int Идентификатор ревизии сущности. Внешний ключ к таблице ревизий сущности.
language varchar(32) Язык, для которого сохранены данные поля (например, und для неопределенного языка, en, ru).
delta int Порядковый номер значения для полей с множественным значением (начинается с 0).
field_data_value longtext Основное значение поля. Конкретное содержание зависит от типа поля.
field_data_format varchar(255) Идентификатор формата текста, если поле поддерживает фильтрацию. Ссылается на таблицу filter_format.

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

Когда в Drupal создается новая ревизия сущности (например, при сохранении новой версии материала), система полей создает соответствующие записи в таблицах ревизий для каждого поля. Для каждого поля field_data создается парная таблица field_revision_field_data.

При каждом сохранении новой ревизии сущности, данные всех ее полей записываются в соответствующие таблицы ревизий. При этом в таблице field_data_field_data обновляется только запись с последней (текущей) версией, а в field_revision_field_data сохраняется полная история всех версий.

Первичный ключ таблицы состоит из комбинации полей: entity_type, entity_id, revision_id, deleted, delta, language. Это гарантирует уникальность каждой ревизии каждого значения поля.

Система использует эти данные для отображения истории изменений, сравнения версий и восстановления предыдущих состояний полей через механизм ревизий Drupal.

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

Получить все ревизии поля body для конкретного материала:

SELECT fr.revision_id, fr.field_body_value, fr.field_body_format, n.vid, n.title FROM field_revision_body fr JOIN node_revision n ON fr.revision_id = n.vid WHERE fr.entity_id = 123 ORDER BY fr.revision_id DESC;

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

  • таблицу field_data_body,
    которая хранит текущие версии данных полей
  • таблицу node_revision,
    которая содержит ревизии материалов
  • таблицу node,
    которая хранит основные данные материалов
  • таблицу field_config,
    которая содержит конфигурацию полей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить