Таблица field_config
Таблица field_config является центральным реестром для всех типов полей в Drupal. Каждая запись в этой таблице определяет отдельный тип поля (например, "Текст", "Ссылка", "Изображение") и его глобальные настройки, которые применяются ко всем экземплярам этого поля, где бы они ни использовались.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
int |
Первичный ключ, уникальный идентификатор конфигурации поля. Имеет автоинкремент. |
field_name |
varchar(32) |
Машинное имя поля. Должно быть уникальным в пределах всей системы. |
type |
varchar(128) |
Тип поля (модуль, предоставляющий этот тип). Например, text, image, entity_reference.
|
module |
varchar(128) |
Имя модуля, который предоставляет этот тип поля. |
active |
int |
Флаг, указывающий, активно ли поле (1) или нет (0). Неактивные поля не загружаются в runtime.
|
storage_type |
varchar(128) |
Тип хранилища, используемый для поля. Определяет, в какой таблице (например, field_data_* или field_revision_*) хранятся данные.
|
storage_module |
varchar(128) |
Имя модуля, предоставляющего тип хранилища. Обычно это field_sql_storage.
|
storage_active |
int |
Флаг, указывающий, активно ли хранилище для этого поля (1) или нет (0).
|
locked |
int |
Флаг, указывающий, заблокировано ли поле (1) от изменений через пользовательский интерфейс. Обычно используется для полей, созданных кодом модуля.
|
data |
longblob |
Сериализованный массив (PHP serialize), содержащий все настройки поля. Включает настройки виджета, форматора, обработки и другие параметры. |
cardinality |
int |
Количество значений, которое может содержать поле. -1 означает неограниченное количество значений, 1 или более – ограниченное.
|
translatable |
int |
Флаг, указывающий, является ли поле переводимым (1) или нет (0).
|
deleted |
int |
Флаг, указывающий, помечено ли поле как удаленное (1) или нет (0). В Drupal поля не удаляются из базы данных сразу, а помечаются для последующей очистки.
|
Как это работает
Когда вы создаете новое поле через административный интерфейс Drupal (например, добавляете поле "Изображение" к типу материала "Статья"), система создает запись в таблице field_config. Эта запись содержит машинное имя поля (field_name), его тип (type), модуль-владелец (module) и все его настройки, сериализованные в поле data.
Отдельно, в таблице field_config_instance, создается запись, которая связывает это общее определение поля (из field_config) с конкретным типом сущности (Bundle), например, "Статья". Это позволяет одному и тому же типу поля (например, "Текстовое поле") использоваться на разных типах материалов с разными настройками экземпляра (например, разный заголовок или описание).
Поле data является ключевым, так как хранит в сериализованном виде сложную структуру настроек. Это включает настройки отображения (форматоры), настройки редактирования (виджеты), допустимые значения, максимальную длину для текстовых полей, разрешенные расширения для файлов и многое другое.
Когда Drupal загружает информацию о полях для рендеринга или редактирования, он сначала обращается к field_config, чтобы получить общие настройки типа поля, а затем к field_config_instance, чтобы получить настройки для конкретного места использования. Эта архитектура обеспечивает гибкость и повторное использование типов полей.
Пример SQL-запроса
Получить список всех активных текстовых полей можно следующим запросом:
SELECT field_name, data
FROM field_config
WHERE type = 'text'
AND active = 1
AND deleted = 0;
Смотрите также
-
таблицу
field_config_instance,
которая хранит настройки экземпляров полей для конкретных бандов -
таблицу
field_data_body,
которая хранит данные полей основного содержимого -
таблицу
node,
которая является основной таблицей для хранения материалов -
таблицу
cache_field,
которая кэширует информацию о полях для производительности