2016-02-09 17 views
0

嗨,我不知道什么是错与螺纹的CakePHP 2的请帮忙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

你能发布模型的关系,CakePHP所生成的查询,您不需经过使用它?它似乎可能是因为内心的孩子也是一个范畴,所以,当你用分类搜索。 id = 11它与孩子不匹配 –

+0

类别模型中没有关系var $ actsAs = array('Tree');生成的查询是SELECT'Category'.'id','Category'.'name','Category'.'parent_id','Category'.'tt','Category'.'rght' FROM'categories' AS'类别'WHERE'Category'.'id' = 11 ORDER BY'Category'.'name' ASC – sanu

回答

1

我认为这个问题是因为你所要求的所有类别用一个id 11. Insted你应该要求所有的类别是儿童类别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'] 
    ) 
); 
+0

是的,我解决了它$孩子= $ this-> Categorie-> find('threaded',array( 'conditions' => array( 'Categorie.lft BETWEEN?AND?'=> array($ parentCategorie ['Categorie'] ['lft'],$ parentCategorie ['Categorie'])['rght'] ) ); – sanu

0

也许最好的机会,你必须达到你想要的是使用树行为的子方法。 如下

$parent=$this->Category->find('first', 
    array('conditions'=>array('Category.id'=>11))); 
$this->Category->children($parent['Category']['id']);