You are here

public function MenuTreeStorage::getAllChildIds in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Menu/MenuTreeStorage.php \Drupal\Core\Menu\MenuTreeStorage::getAllChildIds()

Loads all the IDs for menu links that are below the given ID.

Parameters

string $id: The parent menu link ID.

Return value

array An unordered array of plugin IDs corresponding to all children.

Overrides MenuTreeStorageInterface::getAllChildIds

File

core/lib/Drupal/Core/Menu/MenuTreeStorage.php, line 1064

Class

MenuTreeStorage
Provides a menu tree storage using the database.

Namespace

Drupal\Core\Menu

Code

public function getAllChildIds($id) {
  $root = $this
    ->loadFull($id);
  if (!$root) {
    return [];
  }
  $query = $this->connection
    ->select($this->table, NULL, $this->options);
  $query
    ->fields($this->table, [
    'id',
  ]);
  $query
    ->condition('menu_name', $root['menu_name']);
  for ($i = 1; $i <= $root['depth']; $i++) {
    $query
      ->condition("p{$i}", $root["p{$i}"]);
  }

  // The next p column should not be empty. This excludes the root link.
  $query
    ->condition("p{$i}", 0, '>');
  return $this
    ->safeExecuteSelect($query)
    ->fetchAllKeyed(0, 0);
}