public MenuTreeStorage::getRootPathIds($id)
Returns all the IDs that represent the path to the root of the tree.
array( 'p1' => 1, 'p2' => 6, 'p3' => 8, 'p4' => 0, 'p5' => 0, 'p6' => 0, 'p7' => 0, 'p8' => 0, 'p9' => 0 )
string $id: A menu link ID.
array An associative array of IDs with keys equal to values that represents the path from the given ID to the root of the tree. If $id is an ID that exists, the returned array will at least include it. An empty array is returned if the ID does not exist in the storage. An example $id (8) with two parents (1, 6) looks like the following:
Overrides MenuTreeStorageInterface::getRootPathIds
public function getRootPathIds($id) { $subquery = $this->connection->select($this->table, $this->options); // @todo Consider making this dynamic based on static::MAX_DEPTH or from the // schema if that is generated using static::MAX_DEPTH. // https://www.drupal.org/node/2302043 $subquery->fields($this->table, array('p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8', 'p9')); $subquery->condition('id', $id); $result = current($subquery->execute()->fetchAll(\PDO::FETCH_ASSOC)); $ids = array_filter($result); if ($ids) { $query = $this->connection->select($this->table, $this->options); $query->fields($this->table, array('id')); $query->orderBy('depth', 'DESC'); $query->condition('mlid', $ids, 'IN'); // @todo Cache this result in memory if we find it is being used more // than once per page load. https://www.drupal.org/node/2302185 return $this->safeExecuteSelect($query)->fetchAllKeyed(0, 0); } return array(); }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Menu!MenuTreeStorage.php/function/MenuTreeStorage::getRootPathIds/8.1.x