您好我不知道cakephp 2的线程有什么问题请帮忙
当我在没有条件的情况下使用线程时,它将显示其子项
$category = $this->Category->find('threaded');
输出:
Array
(
[0] => Array
(
[Category] => Array
(
[id] => 11
[name] => Affinity Collection
[parent_id] => 0
[lft] => 25
[rght] => 30
[alias] => affinity-collection
[status] => 0
)
[children] => Array
(
[0] => Array
(
[Category] => Array
(
[id] => 113
[name] => Core samples
[parent_id] => 11
)
)
)
但是当我在条件下使用它时,它不会显示其父级
$this->Category->find('threaded',array('conditions'=>array('Category.id'=>11)));
输出:
Array
(
[0] => Array
(
[Category] => Array
(
[id] => 11
[name] => Affinity Collection
[parent_id] => 0
[lft] => 25
[rght] => 30
[alias] => affinity-collection
[status] => 0
)
[children] => Array
(
)
)
)
请帮助为什么在使用条件时没有向孩子们展示
答案 0 :(得分:1)
我认为问题是因为你要求所有类别为11的类别。你应该要求所有属于11类儿童的类别。
您可以使用左右列来获取嵌套数组(关键字树行为)。试试这个:
$parentCategorie = $this->Categorie->find('first', array(
'conditions' => array(
'Categorie.id' => 11
)
);
$children = $this->Categorie->find('first', array(
'conditions' => array(
'Categorie.lft BETWEEN ? AND ?' => array($parentCategorie['Categorie']['lft'], $parentCategorie['Categorie'])['rght']
)
);
答案 1 :(得分:0)
你必须获得你想要的最好的机会就是使用Tree行为的children方法。 您可以按如下方式使用它
$parent=$this->Category->find('first',
array('conditions'=>array('Category.id'=>11)));
$this->Category->children($parent['Category']['id']);