我有模型:項目=>關鍵字CakePHP根據數組篩選相關模型
使用HMBTM關係(在兩個模型中設置)。
關鍵字表充當一個樹,即。這些關鍵字之間具有層次關係。
我正在使用可容忍的行爲。
用戶選擇關鍵字。
我希望返回的記錄(項目)受所選關鍵字或任何關鍵字的子項限制。我試圖重用我的索引操作..如果沒有選擇關鍵字,則渲染標準索引視圖,如果選擇關鍵字,則查找所有子關鍵字,然後將返回的項目過濾爲具有任何關鍵字標識的項目。
我曾嘗試創建一個兒童(和原始)關鍵字ID的數組,但我無法弄清楚如何讓該數組成爲我的查找動作中的過濾。
我已經嘗試使用:
$this->Project->find('all',
array(
'contain' => array('Keyword.id'=>array($childkeywords))
)
);
其中$ childkeywords是相關ID的排列,創建使用array_push。但是,這不使用鍵值對,只是每個ID的int值。所以我認爲它的結構不正確。
我覺得我想要做一些很容易的事情,但是感覺我越來越遠離解決方案。是否沒有一種標準的方法將記錄限制爲相關模型的ID集合?
乾杯
與聖保羅的幫助,我現在有:
$this->Project->find('all', array(
'fields' => array('id','title','country', 'project_ref'),
'type' => array('inner'),
'contain' => array('Keyword' => array(
'conditions' => array('Keyword.id' => $childkeywords)
)
)
)
)
但使用類型內的是不會改變的結果..
Paulo,感謝這真的幫助..我的代碼現在停止崩潰,但是當我調試創建的數組時,它顯示所有項目和匹配搜索ID的項目顯示關聯的關鍵字。我需要的是擺脫沒有任何關聯,匹配關鍵字的項目。 雖然這感覺真的很接近!這感覺就像一個左外和內連接問題 - 不知道如何解決這個問題。 –
我曾嘗試將'type'=>數組('inner')添加到參數列表中,但這並沒有改變。 –
是的,你可以添加''type'=>'inner'',但是應該在'Keyword'模型中添加'$ belongsTo'數組。你試過了嗎? –