如何仅显示具有CakePHP树行为的产品的类别?

时间:2011-07-05 07:55:22

标签: php cakephp mptt

我正在使用CakePHP的树行为,需要知道是否有类别或子类别中的任何产品,因为我不想查看空类别。

我想做这样的事情:

$cat = $this->Category->find('first',array('conditions'=>array('id'=>$id)));
    $test = $this->Category->find('threaded', array(
        'conditions' => array(
            'Category.lft >=' => $cat['Category']['lft'], 
            'Category.rght <=' => $cat['Category']['rght'],
            'Product.InStock >'=>0 //NOT WORKING
        )
    ));

这将是取消设置不需要的数组维度的起点。在数据库中,类别包含许多产品。

这个问题的最佳解决方案是什么?是否可以使用category_id避免Product-&gt;在foreach循环中查找?

1 个答案:

答案 0 :(得分:1)

未测试

$this->Category->Behaviors->attach->('Containable');

$cat = $this->Category->find('first',array('conditions'=>array('id'=>$id)));

    $test = $this->Category->find('threaded', array(
        'conditions' => array(
            'Category.lft >=' => $cat['Category']['lft'], 
            'Category.rght <=' => $cat['Category']['rght']),
         // use containable behaviour and apply the condition
        'contain'=>array('Product'=>array('conditions'=>
                                          array('Product.InStock >'=> 0)
                                     )
                         )
        ));