Find conditions with hasMany model

前端 未结 2 1027
梦如初夏
梦如初夏 2020-12-10 08:12

I have 4 model:

Item------hasMany---->Detail

Item------hasMany---->Favourite

Item------hasMany---->Category

How can I find all Item that has

2条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-10 08:53

    You need call the containableBehaivor on your model

    in your controller you can make the query

    $items = $this->Item->find('all', array(
               'contain'=>array(
                     'ItemDetail',                                                                
                     'Category'=>array(
                           'conditions'=>array('Category.item_category_id'=>1)
                      ),
                     'Favorite'=>array(
                           'conditions'=>array('Favorite.member_id'=>8)
                      )
                  )
              );
    $this->set('test', $items);
    

    try using Joins

    $items = $this->Item->find('all', array(
                'joins' => array( 
                            array( 
                                'table' => 'categories', 
                                'alias' => 'Category', 
                                'type' => 'inner',  
                                'conditions'=> array('Category.item_category_id' => 1) 
                            ), 
                            array( 
                                'table' => 'favorites', 
                                'alias' => 'Favorite', 
                                'type' => 'inner',  
                                'conditions'=> array('Favorite.member_id' => 8, 'Item.id = Favorite.item_id') 
                                )
                            ),
               'contain'=>array('ItemDetail','Category','Favorite')
              );
    $this->set('test', $items);
    

提交回复
热议问题