CakePHP 3.x的Tree Behavior中的CakePHP 2.x`getPath()`的等价物

时间:2018-02-01 14:43:00

标签: cakephp tree cakephp-3.0

在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的树行为中。是否有一些相同的功能呢?我在文档中看不到它。