menu_link_content
определение объекта содержит информацию, связанную с вашим вопросом; а именно, таблица базы данных, содержащая отношение родитель-потомок, будет menu_link_content_data
.
Ниже приведен пример кода, который будет предоставлять массив идентификаторов узлов для заданного родительского узла при условии, что к узлу прикреплена ссылка меню.
Этот код использует API-интерфейсы Drupal вместо SQL-запросов.
<?php
// Получить корень на основе заданного узла, например. узел 58.
$menu_link_root_entities = \Drupal::entityTypeManager()
->getStorage('menu_link_content')
->загрузить по свойствам([
'ссылка' => [
'uri' => 'сущность: узел/58'
],
],
);
$menu_link_root = сброс($menu_link_root_entities);
// Необходимо вызвать это, чтобы создать экземпляр службы tree_storage.
$menu_tree = \Drupal::menuTree();
// Получаем объекты содержимого ссылки меню на основе их родительского свойства.
$menu_links = \Drupal::service('menu.tree_storage')->loadByProperties([
// Нужно значение фильтра, такое как menu_link_content:8031d182-7a0b-4798-839a-6c66bdd1f27b
'родительский' => 'menu_link_content:' . $menu_link_root->uuid(),
]) ?: [];
$node_ids = array_map (функция ($ v) {
return $v['route_parameters']['node'];
}, $menu_links);
Надеюсь это поможет. Удачи!