2014-01-17 99 views
0

我得到一個Item模型belongsTo a Category,ergo CategoryhasManyItemCakePHP find hasMany associated model

from CategoriesController我想獲取所有Item的分類。

我嘗試這樣做,但它不工作:

if($id == null) { 
    throw new NotFoundException(__('404')); 
} 

$this->Category->id = $id; 
if(!$this->Category->exists()) { 
    throw new NotFoundException(__('404')); 
} 

$items = $this->Category->Item->find(); 
$this->set('items',$items); 

回答

1

如果你的模型是正確設置相應$hasMany$belongsTo,得到了類是不夠默認:

$category = $this->Category->findById($id); 

的項目將自動包含在$category陣列中。你可以用debug()功能檢查:

debug($category); 

也請注意,您可以過濾什麼聯繫你想,當你使用非常有用Containable行爲做find()檢索模型。

1

我不是recursive > -1的粉絲,所以我建議另一種方法。

$items = $this->Category->find('all', array('contain'=>'Item', 
                'recursive'=>-1)); 
$this->set('items',$items); 

或簡單

$items = $this->Category->Item->find('all', 
            array('conditions'=>array('category_id'=>$id))); 

你的問題不指定「所有」,而不是讓環境來填補。