【发布时间】:2012-07-06 06:23:54
【问题描述】:
我有一个名为 Foo 的 CakePHP 插件,它有一个组件,没有控制器,还有几个连接的模型。它的结构是这样的:
/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 的评论,请更清楚地了解您要达到的目标。您可以给我们模型定义或表格布局。您可以在这里看到 book.cakephp.org/2.0/en/core-libraries/behaviors/… 使用 Foo.FooModel1 没有帮助。除此之外,您的模型命名不遵循约定book.cakephp.org/2.0/en/getting-started/…。如果您尝试使用内置功能,这可能会给您带来麻烦
-
你的FooModels之间是什么关系?您的包含数组似乎表明您的 fooModels 之间存在 hasMany/belongsTo 关系,但您的问题提到了 HABTM 关系。
标签: php cakephp containable