我有一個名爲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/
目錄時,一切正常。這個問題似乎來自錯誤的關聯,而不是代碼本身的邏輯。
非常感謝您的幫助。
請在相應的型號中包含您的關聯。 – Dave 2012-07-05 20:18:40
查看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
FooModels之間的關係是什麼?你的包含數組似乎提示你的fooModels之間有hasMany/belongsTo關係,但你的問題提到了HABTM關係。 – 2012-07-18 15:29:40