Таблица menu_link_content__menu_parent
Таблица menu_link_content__menu_parent является дельта-таблицей (data table) в Drupal, которая хранит данные о родительских пунктах меню для сущностей типа "Пункт меню" (menu_link_content). Она создается и управляется модулем Field API для хранения значений поля menu_parent.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип сущности (бандл), к которой относится данная запись. Для пунктов меню обычно имеет значение menu_link_content.
|
deleted |
int |
Флаг удаления: 0 - запись активна, 1 - запись удалена.
|
entity_id |
int |
Идентификатор сущности пункта меню. Внешний ключ, ссылается на id в таблице menu_link_content.
|
revision_id |
int |
Идентификатор ревизии сущности. Внешний ключ, ссылается на revision_id в таблице menu_link_content_revision.
|
langcode |
varchar(32) |
Код языка, для которого предназначено это значение поля. |
delta |
int |
Порядковый номер значения в случае, если поле может содержать несколько значений. |
menu_parent_value |
varchar(255) |
Значение родительского пункта меню в формате menu_name:id, где menu_name - машинное имя меню, а id - идентификатор родительского пункта.
|
Как это работает
Когда в Drupal создается или редактируется пункт меню, и для него указывается родительский элемент, значение поля menu_parent сохраняется в этой таблице. Drupal использует систему дельта-таблиц (data tables) для хранения данных полей сущностей, что обеспечивает гибкость в управлении данными.
Значение menu_parent_value хранится в специальном формате, который включает машинное имя меню и ID родительского пункта. Например, main:123 означает, что пункт находится в меню "main" и его родителем является пункт с ID 123.
При построении древовидной структуры меню Drupal использует данные из этой таблицы для определения иерархии пунктов. Система кэширования меню агрегирует данные из базовой таблицы menu_link_content и дельта-таблиц для эффективного отображения меню на сайте.
Поле deleted используется для мягкого удаления записей при удалении поля из бандла или самой сущности, что позволяет при необходимости восстановить данные.
Пример SQL-запроса
Получить информацию о родительских пунктах для всех активных пунктов меню можно следующим запросом:
SELECT mlc.id, mlc.title, mlc.menu_name, mlcp.menu_parent_value
FROM menu_link_content mlc
JOIN menu_link_content__menu_parent mlcp ON mlc.id = mlcp.entity_id
WHERE mlcp.deleted = 0;
Смотрите также
-
таблицу
menu_link_content,
которая содержит основные данные пунктов меню -
таблицу
menu_link_content_revision,
которая хранит ревизии пунктов меню -
таблицу
menu_tree,
которая содержит скомпилированную древовидную структуру меню -
таблицу
menu_tree_hash,
которая хранит хэши структуры меню для кэширования