【问题标题】:CakePHP plugin models not associating when using Containable使用 Containable 时 CakePHP 插件模型不关联
【发布时间】: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


【解决方案1】:

在您的模型中设置关联时,请确保在插件模型前面加上其插件名称...否则蛋糕会即时生成一个...并且不要在您的插件中使用该文件...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多