Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
159 of 182 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица 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,
    которая хранит сохраненные представления