2013-04-30 24 views
0

我的模型與自己有很多關係,因爲某些記錄對同一個表中的其他記錄是「父母」。CakePHP:我可以使用可容納來包含來自find()結果中同一個表的記錄嗎?

我在從控制器內部沒有任何麻煩,這 - $返回相關記錄>型號 - >找到(「全部」 ......),但是當我使用它裏面不同一樣的東西不起作用模型的控制器。我相信這是containable的工作,但我無法實現它的工作。我沒有看到錯誤,但沒有出現關聯的記錄(只有一位父母)。

回答

1

硒你的模型是這樣,然後你應該能夠使用中可容納的行爲

class MyModel extends AppModel { 

    public $hasMany = array(
    'Children'=>array(
     'className'=>'MyModel', 
     'foreignKey'=>'parent_id' 
    ) 
); 

    public $belongsTo = array(
    'Parent'=>array(
     'className'=>'MyModel', 
     'foreignKey'=>'parent_id' 
    ) 
); 

} 
+0

這看起來太棒了!但是我想仔細檢查一下:即使類名(Children,MyModel等)都是* same *模型,這個工作是否會起作用? – emersonthis 2013-04-30 21:15:51

+0

我用過的所有地方MyModel都可以是同一個模型。 「Children」和「Parent」是別名,可以是任何你想要它們的東西 – fullybaked 2013-04-30 21:17:27

+0

這是有效的!但仍然有一個祕密:我的模型基本上是建立在你(正確)建議的位置。問題原來與'$ this-> OtherModel-> contains(...)'在同一個控制器中出現較高的相關。你能理解這個嗎?我沒有在書中看到有關'contains()'方法模型中的「異花授粉」。 – emersonthis 2013-04-30 21:32:07

相關問題