Таблица node__field_image
Таблица node__field_image является дельта-таблицей для хранения данных поля field_image типа "Изображение" в Drupal. Она хранит информацию о каждом отдельном изображении, прикрепленном к материалу, включая ссылку на файл, альтернативный текст, заголовок и другие метаданные.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип материала (ноды), к которому привязано изображение. Например: article, page.
|
deleted |
tinyint |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор материала (ноды), к которому прикреплено изображение. Внешний ключ к таблице node.
|
revision_id |
int |
Идентификатор ревизии материала. Внешний ключ к таблице node_revision.
|
langcode |
varchar(32) |
Язык содержимого (например: en, ru).
|
delta |
int |
Порядковый номер изображения в случае, если поле допускает multiple значений. |
field_image_target_id |
int |
Идентификатор файла изображения. Внешний ключ к таблице file_managed.
|
field_image_alt |
varchar(512) |
Альтернативный текст (alt text) для изображения. |
field_image_title |
varchar(1024) |
Заголовок (title) изображения, отображаемый при наведении курсора. |
field_image_width |
int |
Ширина изображения в пикселях. |
field_image_height |
int |
Высота изображения в пикселях. |
Как это работает
Когда пользователь добавляет или редактирует материал и загружает изображение через поле field_image, Drupal создает запись в таблице file_managed для самого файла и запись в таблице node__field_image, которая связывает этот файл с конкретным материалом.
Поле field_image_target_id содержит ID файла из таблицы file_managed, что позволяет получить путь к файлу, его MIME-тип и другую информацию. Поля field_image_alt и field_image_title хранят метаданные для accessibility и улучшения пользовательского опыта.
Если поле field_image настроено как многозначное (allow multiple values), каждое добавленное изображение будет иметь свою запись с уникальным значением delta (начиная с 0) для одного и того же entity_id.
При удалении изображения из материала значение поля deleted устанавливается в 1, но запись физически не удаляется из таблицы для сохранения истории изменений и целостности ревизий.
Пример SQL-запроса
Получить все изображения для конкретного материала можно следующим запросом:
SELECT
n.nid,
n.title,
fmi.field_image_target_id,
fm.filename,
fm.uri,
fmi.field_image_alt,
fmi.field_image_title
FROM node__field_image fmi
INNER JOIN node n ON n.nid = fmi.entity_id
INNER JOIN file_managed fm ON fm.fid = fmi.field_image_target_id
WHERE fmi.entity_id = 123
AND fmi.deleted = 0
ORDER BY fmi.delta;
Смотрите также
-
таблицу
node,
которая хранит основные данные материалов -
таблицу
file_managed,
которая содержит информацию о загруженных файлах -
таблицу
node_revision,
которая хранит ревизии материалов -
таблицу
node_field_revision,
которая содержит ревизии полей материалов