Таблица users_data
Таблица users_data используется в Drupal для хранения дополнительных полей пользователей, созданных через Field API. В отличие от базовых полей таблицы users, эта таблица хранит данные, специфичные для определенных модулей или настроенные администратором.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
uid |
int |
Идентификатор пользователя. Внешний ключ, ссылается на users.uid.
|
module |
varchar(255) |
Название модуля, которому принадлежат данные. Определяет, какой модуль ответственен за эти данные. |
name |
varchar(128) |
Имя элемента данных. Обычно соответствует названию поля или конкретного свойства. |
value |
longtext |
Значение данных. Может содержать различные типы информации в сериализованном или текстовом формате. |
serialized |
tinyint |
Флаг, указывающий на то, что значение в поле value сериализовано. 0 - не сериализовано, 1 - сериализовано.
|
Как это работает
Когда модуль или система полей Drupal добавляет дополнительные данные к пользователю, которые не входят в стандартный набор полей таблицы users, эти данные сохраняются в users_data. Каждая запись привязана к конкретному пользователю через uid.
Поле module определяет, какой модуль ответственен за эти данные, что позволяет системе правильно управлять ими (загружать, обновлять, удалять). Поле name идентифицирует конкретный элемент данных в рамках модуля.
Флаг serialized указывает, нужно ли unserialize значение при извлечении из базы данных. Это позволяет хранить сложные структуры данных (массивы, объекты) в виде строки.
Важно отметить, что в современных версиях Drupal для хранения пользовательских полей чаще используются специализированные таблицы, созданные Field API, но users_data остается для хранения различных метаданных и настроек модулей.
Пример SQL-запроса
Получить все дополнительные данные для конкретного пользователя:
SELECT uid, module, name, value, serialized
FROM users_data
WHERE uid = 1
ORDER BY module, name;
Получить конкретное значение данных для модуля:
SELECT value, serialized
FROM users_data
WHERE uid = 5
AND module = 'mymodule'
AND name = 'preferences';
Смотрите также
-
таблицу
users,
которая содержит основные данные пользователей -
таблицу
users_roles,
которая хранит связи пользователей с ролями -
таблицу
sessions,
которая хранит данные сессий пользователей -
таблицу
authmap,
которая хранит внешние аутентификационные данные