CakePHP 的等价物 2.x CakePHP 的树行为中的 `getPath()` 3.x

Equivalent of CakePHP 2.x `getPath()` in Tree Behaviour for CakePHP 3.x

在 CakePHP 2.x 中,Tree Behaviour 上有一个名为 getPath() 的方法,它允许您从树的顶部获取给定节点的路径。

例如 $this->Navigation->getPath(33) 给我一个数组,显示如何从顶部到达树的节点 33。

我有一些数据已放入 CakePHP 2.x 中构建的应用程序中,但是另一个应用程序是 CakePHP 3.x 中构建的并且需要读取此数据。

我已将 3.x 应用程序配置如下:

// src/Model/Table/NavigationsTable.php
namespace App\Model\Table;

use Cake\ORM\Table;

class NavigationsTable extends Table {

    public function initialize(array $config)
    {
        $this->addBehavior('Tree');
    }
}

控制器正在尝试使用 getPath() 方法:

// in src/Controller/NavigationsController.php

$Navigations = TableRegistry::get('Navigations');
$nav_query = $Navigations->getPath(33);
debug($nav_query);

这会给出一条错误消息:

未知方法"getPath"

我认为这是因为 getPath() 不在 CakePHP 3.x 的树行为中。是否有一些等效的功能可以做到这一点?我在文档中看不到它。

路径检索已移至查找器中,path 查找器:

$nav_query = $Navigations->find('path', ['for' => 33]);

另见