Таблица field_data_field_data
Таблица field_data_field_data является стандартной таблицей данных поля в Drupal 7. Она создается автоматически при добавлении поля с машинным именем field_data к любому типу сущности (нода, пользователь, термин таксономии и т.д.). Эта таблица хранит фактические данные, введенные пользователями или системой для данного поля.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
entity_type |
varchar(128) |
Тип сущности, к которой принадлежит поле (например, node, user, taxonomy_term).
|
bundle |
varchar(128) |
Название бандла (типа материала, роли пользователя, словаря таксономии), к которому прикреплено поле. |
deleted |
int |
Флаг удаления: 0 - запись активна, 1 - запись удалена. Drupal использует "мягкое" удаление для целостности данных.
|
entity_id |
int |
Идентификатор сущности (nid, uid, tid), к которой относится значение поля. Внешний ключ к таблице базовой сущности.
|
revision_id |
int |
Идентификатор ревизии сущности, если сущность поддерживает версионность. Для сущностей без ревизий равен entity_id.
|
language |
varchar(32) |
Языковой код значения поля (например, und для неопределенного языка, en, ru). Позволяет хранить multilingual данные.
|
delta |
int |
Порядковый индекс значения для полей с множественным значением. Начинается с 0.
|
field_data_value |
longtext |
Основное значение поля. Конкретный тип данных и содержание зависят от настроек поля (формат, максимальная длина). |
field_data_format |
varchar(255) |
Идентификатор формата текстового фильтра (input format), примененного к значению, если поле настроено на использование фильтров. |
Как это работает
Когда на сайте Drupal создается поле с машинным именем field_data, система автоматически генерирует две таблицы: field_data_field_data (для хранения данных) и field_revision_field_data (для хранения ревизий этих данных). Структура таблицы определяется типом поля (текстовое, число, ссылка и т.д.).
При сохранении сущности (ноды, пользователя) данные из соответствующей формы записываются в эту таблицу. Для полей с множественными значениями создается несколько записей с одинаковым entity_id и language, но разным delta.
При загрузке сущности Drupal присоединяет (JOIN) данные из этой таблицы к основной сущности на основе entity_type, entity_id и language. Поле deleted обеспечивает целостность данных при удалении поля или его значений - данные не удаляются физически, а помечаются как удаленные.
Имя таблицы формируется по шаблону field_data_ + [машинное_имя_поля]. Таким образом, таблица field_data_field_data специфична для поля с машинным именем field_data.
Пример SQL-запроса
Выбрать все значения поля field_data для определенной ноды:
SELECT fdfd.entity_id, fdfd.delta, fdfd.field_data_value, fdfd.field_data_format
FROM field_data_field_data fdfd
WHERE fdfd.entity_type = 'node'
AND fdfd.entity_id = 123
AND fdfd.deleted = 0
ORDER BY fdfd.delta;
Смотрите также
-
таблицу
node,
которая хранит основные данные материалов (нод) -
таблицу
field_config,
которая хранит конфигурацию полей -
таблицу
field_revision_field_data,
которая хранит ревизии данных этого поля -
таблицу
users,
которая хранит данные пользователей