CakePHP插件模型在使用Containable时不关联

时间:2012-07-05 19:30:57

标签: php cakephp containable

我有一个名为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/目录时,一切正常。问题似乎来自错误的关联,而不是代码本身的逻辑。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

在模型中设置关联时,请确保为插件模型添加插件名称前缀...否则,cake会生成一个...而不是在插件中使用该文件...