Таблица user__user_picture
Таблица user__user_picture является дельта-таблицей для хранения данных о файлах изображений пользователей. Она используется, когда поле user_picture настроено как переводное и позволяет хранить разные версии изображения для разных языков.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип сущности (бандл). Для пользователей всегда имеет значение user. |
deleted |
tinyint |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор пользователя (uid). Внешний ключ к таблице users.
|
revision_id |
int |
Идентификатор ревизии пользователя. Внешний ключ к таблице users_field_data.
|
langcode |
varchar(32) |
Код языка, для которого предназначено это значение поля. |
delta |
int |
Порядковый номер значения в случае, если поле может содержать несколько значений. |
user_picture_target_id |
int |
Идентификатор файла изображения. Внешний ключ к таблице file_managed.
|
user_picture_alt |
varchar(512) |
Альтернативный текст (alt) для изображения.
|
user_picture_title |
varchar(1024) |
Текст подсказки (title) для изображения.
|
user_picture_width |
int |
Ширина изображения в пикселях. |
user_picture_height |
int |
Высота изображения в пикселях. |
Как это работает
Когда пользователь загружает изображение в свой профиль, система создает запись в таблице file_managed с информацией о файле. Затем в таблице user__user_picture создается связь между пользователем (entity_id) и файлом (user_picture_target_id).
Структура таблицы позволяет хранить несколько изображений для одного пользователя (если поле настроено как многозначное), а также разные версии изображения для разных языков сайта (langcode).
Поля user_picture_alt и user_picture_title хранят метаданные для улучшения доступности и SEO. Поля user_picture_width и user_picture_height содержат размеры изображения, что позволяет Drupal оптимизировать отображение без необходимости постоянной загрузки файла.
Флаг deleted используется для мягкого удаления - запись помечается как удаленная, но физически остается в базе данных для возможного восстановления или аудита.
Пример SQL-запроса
Получить информацию об изображениях пользователей вместе с данными о файлах можно следующим запросом:
SELECT u.name, u.uid, f.filename, f.uri, up.user_picture_alt, up.user_picture_title
FROM user__user_picture up
INNER JOIN users u ON up.entity_id = u.uid
INNER JOIN file_managed f ON up.user_picture_target_id = f.fid
WHERE up.deleted = 0 AND up.langcode = 'ru';
Смотрите также
-
таблицу
users,
которая содержит основные данные пользователей -
таблицу
users_field_data,
которая хранит данные полей пользователей -
таблицу
file_managed,
которая содержит информацию о загруженных файлах -
таблицу
user__roles,
которая хранит связи пользователей с ролями