Таблица field_data_field_image
Таблица field_data_field_image является одной из таблиц хранения данных полей в Drupal 7. Она создается автоматически модулем Field при добавлении поля с машинным именем field_image типа "Изображение" и хранит основную информацию о загруженных изображениях, связанных с различными сущностями системы.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
entity_type |
varchar(128) |
Тип сущности, к которой прикреплено изображение (например, node, user, taxonomy_term).
|
bundle |
varchar(128) |
Название типа материала (или другого бандла), к которому относится это поле. |
deleted |
int |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор сущности (например, nid для узла, uid для пользователя), к которой прикреплено изображение.
|
revision_id |
int |
Идентификатор ревизии сущности (актуально для включенного трекинга ревизий). |
language |
varchar(32) |
Язык контента (например, und для неопределенного языка, ru, en).
|
delta |
int |
Порядковый номер (вес) изображения, если поле допускает множественные значения. |
field_image_fid |
int |
Идентификатор файла (fid) из таблицы file_managed, который представляет собой загруженное изображение.
|
field_image_alt |
varchar(512) |
Альтернативный текст (alt) для изображения, важный для accessibility (доступности) и SEO.
|
field_image_title |
varchar(1024) |
Текст заголовка (title) для изображения, который отображается в виде всплывающей подсказки.
|
field_image_width |
int |
Оригинальная ширина изображения в пикселях. |
field_image_height |
int |
Оригинальная высота изображения в пикселях. |
Как это работает
Когда на сайте Drupal создается поле типа "Изображение" с машинным именем field_image, система автоматически создает две таблицы: field_data_field_image (для хранения данных) и field_revision_field_image (для хранения ревизий этих данных). При загрузке изображения через интерфейс управления контентом, файл сначала сохраняется в таблицу file_managed, а затем в эту таблицу записывается связь между сущностью (узлом, пользователем) и файлом изображения, а также его метаданные (alt, title).
Структура таблицы следует общей схеме хранения полей в Drupal 7. Поля entity_type, bundle, entity_id и delta вместе образуют первичный ключ, что позволяет однозначно идентифицировать каждое значение поля, особенно когда поле допускает множественные значения.
При отображении сущности (например, при просмотре узла) система загружает все данные её полей из соответствующих таблиц field_data_*. Для поля изображения берутся данные из field_image_fid, field_image_alt и field_image_title, после чего по fid находится сам файл в таблице file_managed, и генерируется HTML-тег img с правильными атрибутами src, alt и title.
Важно отметить, что таблица field_data_field_image содержит только данные. Конфигурация самого поля (название, количество значений, настройки отображения, разрешенные расширения файлов) хранится в других системных таблицах Drupal, таких как field_config и field_config_instance.
Пример SQL-запроса
Получить все изображения для определенного узла (например, с nid = 42) вместе с путями к файлам можно следующим запросом:
SELECT
fdfi.entity_id,
fdfi.delta,
fdfi.field_image_alt,
fdfi.field_image_title,
fm.fid,
fm.uri,
fm.filename
FROM field_data_field_image fdfi
INNER JOIN file_managed fm ON fdfi.field_image_fid = fm.fid
WHERE fdfi.entity_type = 'node'
AND fdfi.entity_id = 42
AND fdfi.deleted = 0
ORDER BY fdfi.delta;
Смотрите также
-
таблицу
file_managed,
которая хранит информацию о загруженных файлах -
таблицу
field_config,
которая хранит конфигурацию полей -
таблицу
node,
которая хранит основные данные узлов -
таблицу
users,
которая хранит данные пользователей