Таблица field_storage_config
Таблица field_storage_config является системной таблицей Drupal, которая хранит конфигурационные данные для хранилищ полей. Она определяет, какие поля существуют в системе, их тип, настройки и то, как они связаны с конкретными типами сущностей (ноды, пользователи, таксономия и т.д.). Эта конфигурация управляется через Drupal Configuration API и обычно экспортируется в YAML-файлы.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
varchar(255) |
Первичный ключ. Уникальный машинный идентификатор конфигурационной записи хранилища поля. Имеет вид field.storage.[entity_type].[field_name].
|
field_name |
varchar(32) |
Машинное имя поля (например, field_image, body). Уникально в рамках одного типа сущности.
|
entity_type |
varchar(32) |
Тип сущности, к которой прикреплено поле (например, node, user, taxonomy_term).
|
type |
varchar(32) |
Тип поля (например, text, image, entity_reference, list_string). Определяет, какие данные может хранить поле.
|
settings |
blob |
BLOB-поле, содержащее сериализованные настройки хранилища поля. Сюда входят настройки, специфичные для типа поля, которые влияют на то, как данные хранятся в БД. |
module |
varchar(32) |
Имя модуля, который предоставляет тип поля. |
locked |
tinyint |
Флаг, указывающий, заблокировано ли хранилище поля для изменений через пользовательский интерфейс (0 - разблокировано, 1 - заблокировано). Заблокированные поля обычно создаются кодом модуля.
|
cardinality |
int |
Количество значений, которое может содержать поле. -1 означает неограниченное количество значений.
|
translatable |
tinyint |
Флаг, указывающий, является ли поле переводимым (0 - нет, 1 - да). Определяет, будут ли данные этого поля храниться отдельно для каждого языка.
|
deleted |
tinyint |
Флаг, указывающий, что хранилище поля было помечено на удаление (0 - активно, 1 - удалено). В Drupal данные поля не удаляются сразу, а помечаются этим флагом.
|
Как это работает
Когда администратор сайта создает новое поле через пользовательский интерфейс (например, добавляет поле "Изображение" к типу материала "Статья"), система создает новую запись в таблице field_storage_config. Эта запись содержит машинное имя поля, тип сущности, к которой оно привязано, тип данных поля и все его настройки.
Данные этой таблицы тесно связаны с данными в field_config. Если field_storage_config определяет *что* это за поле и *как* оно хранится, то field_config определяет *где* оно используется (привязка к конкретному типу материала, настройки отображения и т.д.). Одно хранилище поля (field_storage_config) может быть использовано в нескольких конфигурациях поля (field_config).
При сохранении сущности (ноды, пользователя) система обращается к конфигурации хранилища, чтобы понять, в какие таблицы базы данных записывать значения полей. Например, для простых строковых полей данные будут записаны в field_revision_body, а для файлов - в field_revision_field_image.
Поле deleted реализует механизм "мягкого" удаления. Когда поле удаляется, его запись в field_storage_config помечается как удаленная, но физически не удаляется из базы до тех пор, пока не будут очищены все данные этого поля. Это позволяет откатить удаление поля или корректно обработать его данные в процессе пакетного удаления.
Пример SQL-запроса
Получить список всех хранилищ полей для сущности "нода", которые предоставляет модуль image:
SELECT id, field_name, type, cardinality, translatable
FROM field_storage_config
WHERE entity_type = 'node' AND module = 'image';
Смотрите также
-
таблицу
field_config,
которая хранит конфигурацию привязки полей к пакетам полей и типам сущностей -
таблицу
config,
которая является общей таблицей для хранения конфигураций Drupal -
таблицу
node,
которая хранит основные данные материалов (нод) -
таблицу
cache_discovery,
в которой кэшируется информация о обнаруженных полях и их определениях