2012-12-07 28 views
0

第一次使用Cake及其可容納的行爲,但它不像預期的那樣工作......或根本沒有。CakePHP包含的行爲沒有觸發

我試圖獲得產品配件的列表。產品型號HABTM產品(別名'ProductRelation')。聯結表是具有兩個產品ID的products_products - product_id和related_id。這是與此我想拉動一個給定product_id

配件列表(從related_id列驅動的產品)在我的產品模型中,我已經添加$ actsAs = array('Containable');

而在我的控制器中,即使沒有條件,對食譜中的可容納使用參考的快速測試也根本無法包含產品。

debug($this->Product->find('all', array('contain' => 'ProductRelation'))); 

..返回分貝每一個產品的陣列,與所有相關機型 - 圖片,內容標籤,評級,評論,價格,等我還沒有嘗試應用任何「條件」針對這一點,因爲打電話應該將數據限制在產品上,根據食譜,它是ProductRelation數據...

任何提示?

+0

我從來沒有使用habtm別名表,但不應該包含一組模型? ''contains'=> array('ProductRelation')' –

+1

你有沒有在你的AppModel中:'var $ actsAs = array('Containable');' –

+1

@BarryChapman他說他有。 –

回答

2

看來你似乎有遞歸。嘗試使用以下:

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation', 
    'recursive' => -1 
))); 

是否適合你,你應該開始添加containableAppModel類和recursive屬性設置爲-1。這將確保您只能獲得您請求的結果。

NB:蛋糕沒有join爲HABTM,所以你不能在任何情況下使用ProductRelation

+0

「Cake不會加入HABTM,因此您無法在任何情況下使用ProductRelation。」 。死了,謝謝。我利用Joins和運行條件解決了這些問題。我想這似乎是正確的從其他職位。 – tremendusapps