Таблица views_data
Таблица views_data является центральным реестром метаданных для модуля Views. Она не содержит самих данных, а описывает структуру других таблиц базы данных, их поля, типы данных, связи и то, как эти данные могут быть использованы в представлениях (views). Эта информация предоставляется различными модулями через хуки hook_views_data() и hook_views_data_alter().
Поля
| Поле | Тип данных | Описание |
|---|---|---|
table_name |
varchar(64) |
Имя таблицы базы данных, для которой предоставляются метаданные. Это первичный ключ таблицы. |
data |
longblob |
Сериализованный массив метаданных, описывающих таблицу, её поля, фильтры, сортировки, отношения и аргументы. Данные хранятся в бинарном формате. |
Как это работает
Модули Drupal реализуют хук hook_views_data(), в котором возвращают структурированный массив, описывающий их таблицы и поля. Когда кеш Views очищается или перестраивается, система Views вызывает этот хук у всех активных модулей, сериализует полученные данные и сохраняет их в таблицу views_data.
При создании или редактировании представления модуль Views обращается к этой таблице, чтобы получить информацию о доступных полях, фильтрах, сортировках и связях. Это позволяет пользователю через интерфейс выбирать, какие данные отображать, как их фильтровать и сортировать, не написания ни строчки SQL-кода.
Структура данных в поле data очень сложна и включает в себя определения для:
table- общая информация о таблице (описание, группа, базовый запрос)field- определения полей для отображенияfilter- определения фильтровsort- определения сортировокargument- определения контекстных фильтров (аргументов)relationship- определения связей между таблицами
Важно отметить, что таблица views_data является кешем. Её данные могут быть перестроены через административный интерфейс (Администрирование > Конфигурация > Разработка > Производительность > Очистить кеш) или с помощью функции views_invalidate_cache().
Пример SQL-запроса
Посмотреть метаданные для конкретной таблицы можно следующим запросом:
SELECT table_name, data
FROM views_data
WHERE table_name = 'node_field_data';
Для просмотра человекочитаемого формата данных их необходимо десериализовать:
SELECT table_name, CONVERT(data USING utf8) as decoded_data
FROM views_data
WHERE table_name = 'users_field_data';
Смотрите также
-
таблицу
node_field_data,
которая содержит основные данные материалов (нод) -
таблицу
users_field_data,
которая хранит данные пользователей -
таблицу
taxonomy_term_field_data,
которая содержит данные терминов таксономии -
таблицу
views_view,
которая хранит сохраненные представления