开发者

How to show only categories with products with CakePHP's tree behavioral?

I'm using CakePHP's tree behavior and need to know if there is any products in category or it's subcategories since I don't want to view empty categories.

I would like to do something like this:

$cat = $this->Category->find('first',array('conditions'=>array('id'=>$id)));
    $test = $this->Category->find('threaded', array(
        'conditions' => array(
        开发者_如何学Go    'Category.lft >=' => $cat['Category']['lft'], 
            'Category.rght <=' => $cat['Category']['rght'],
            'Product.InStock >'=>0 //NOT WORKING
        )
    ));

That would be a starting point to unset not needed array dimensions. In database, categories hasMany products.

What could be best solution to this problem? Is it possible to avoid Product->find in foreach loop with category_id?


Untested

$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)
                                     )
                         )
        ));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜