2012-07-05 66 views
3

我有一個名爲Foo的CakePHP插件,它有一個組件,沒有控制器和幾個連接的模型。它的結構是這樣的:CakePHP插件模型在使用Containable時沒有關聯

/Plugin/Foo/Model/ 
-FooModel1.php 
-FooModel2.php 
-FooModel3.php 
-FooModel4.php 

爲了與標準(非插件)代碼連接,該插件的車型之一有條件使用稱爲Bar標準模型相關聯。我不認爲這與問題有關,但我想徹底。

FooController我使用Containable,幾層:

$params = array(
    'conditions' => array('Bar.id' => $bar_id), 
    'contain' => array(
    'FooModel1' => array(
     'FooModel2' => array(
     'FooModel3' => array('Something', 'FooModel4') 
    ), 
    ), 
), 
); 

這就產生這樣的錯誤:

Warning: Model "FooModel2" is not associated with model "FooModel3" [CORE\Cake\Model\Behavior\ContainableBehavior.php, line 339] 

所以在我的插件控制器我需要包含插件模型。我試着用Foo爲模型添加前綴(例如Foo.FooModel1),但Containable認爲我試圖獲得一個名爲Foo的模型。在插件模型中的$hasAndBelongsToMany陣列中,我嘗試了'Model1' => array()'Foo.Model1' => array(),這兩者都不起作用。我如何正確設置此關聯?

附註:當我將模型移出插件並進入標準/Model/目錄時,一切正常。這個問題似乎來自錯誤的關聯,而不是代碼本身的邏輯。

非常感謝您的幫助。

+2

請在相應的型號中包含您的關聯。 – Dave 2012-07-05 20:18:40

+0

查看dave的評論,請更清楚你嘗試存檔的內容。你可以給我們模型定義或表格佈局。你可以在這裏看到,使用Foo.FooModel1的http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containing-deeper-associations沒有幫助。除此之外,您的模型命名不符合約定http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#model-and-database-conventions。如果您嘗試使用內置功能,這可能會給您帶來麻煩 – Jeroen 2012-07-13 22:35:33

+0

FooModels之間的關係是什麼?你的包含數組似乎提示你的fooModels之間有hasMany/belongsTo關係,但你的問題提到了HABTM關係。 – 2012-07-18 15:29:40

回答

3

在模型中設置關聯時,請確保以插件名稱作爲插件模型的前綴...否則,蛋糕將生成一個動態...並且不會在插件中使用該文件...