cakephp 2线程没有显示孩子

时间:2016-02-09 05:20:13

标签: cakephp-2.0

您好我不知道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
                (
                )

        )

)

请帮助为什么在使用条件时没有向孩子们展示

2 个答案:

答案 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']);