НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
136 of 182 menu

Таблица field_config_instance

Таблица field_config_instance является одной из ключевых таблиц системы полей Drupal. Она определяет, какие поля прикреплены к каким типам сущностей (бандлам) и содержит специфические настройки для каждого такого экземпляра поля.

Поля

Поле Тип данных Описание
id serial Уникальный числовой идентификатор экземпляра поля. Первичный ключ таблицы.
field_id int Внешний ключ, связывающий экземпляр с базовой конфигурацией поля из таблицы field_config.
field_name varchar(32) Машинное имя поля. Дублируется здесь для упрощения JOIN-запросов и повышения производительности.
entity_type varchar(32) Тип сущности, к которой привязан экземпляр поля (например, node, user, taxonomy_term).
bundle varchar(128) Название бандла (подтипа) сущности, к которому привязано поле (например, тип материала article, словарь таксономии tags).
data longblob Сериализованные данные конфигурации для данного экземпляра поля. Хранятся в формате PHP serialize. Содержат настройки, специфичные для этого бандла: метку поля, описание, обязательность, настройки отображения и т.д.
deleted tinyint Флаг, указывающий, удален ли данный экземпляр поля (1) или активен (0). В Drupal данные помечаются как удаленные, а физически удаляются пакетно для обеспечения целостности данных.

Как это работает

Система полей Drupal разделена на две основные части: общая конфигурация поля (field_config) и его экземпляры (field_config_instance). Одно поле (например, "Изображение") может быть добавлено к разным типам сущностей (нодам, пользователям) или к разным бандлам одного типа сущности (ноды "Статья" и "Страница"). Каждая такая привязка создает отдельную запись в field_config_instance.

Поле data содержит настройки, которые могут отличаться для каждого экземпляра. Например, для поля "Тело" (body) в типе материала "Статья" можно установить метку "Текст статьи", а в типе материала "Страница" - "Содержание страницы". Эти метки хранятся именно в конфигурации экземпляра.

Когда модуль Field UI или другой код создает новое поле на форме управления бандлом, происходит вставка новой записи в эту таблицу. При удалении поля с формы бандла соответствующей записи устанавливается флаг deleted = 1.

Во время работы Drupal активно использует эту таблицу для построения форм ввода и отображения полей, проверяя, какие поля attached к какой сущности и с какими настройками.

Пример SQL-запроса

Получить список всех экземпляров полей для типа материала "article":

SELECT fci.id, fci.field_name, fci.field_id, fci.entity_type, fci.bundle FROM field_config_instance fci WHERE fci.entity_type = 'node' AND fci.bundle = 'article' AND fci.deleted = 0;

Получить информацию о конкретном экземпляре поля с десериализованными данными:

SELECT fci.*, fc.type as field_type, fc.module as field_module, UNCOMPRESS(fci.data) as data_serialized FROM field_config_instance fci INNER JOIN field_config fc ON fci.field_id = fc.id WHERE fci.id = 15;

Смотрите также

  • таблицу field_config,
    которая хранит общую конфигурацию полей
  • таблицу field_data_body,
    которая хранит данные полей конкретного типа
  • таблицу node,
    которая является основной таблицей для хранения материалов (нод)
  • таблицу users,
    которая хранит данные пользователей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить