编程语言
首页 > 编程语言> > CakePHP插件模型在使用Containable时未关联

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

非常感谢您的帮助.

解决方法:

在模型中设置关联时,请确保在插件模型之前为其插件名称添加前缀…否则,cake将在运行时生成一个…并且不使用插件中的文件…

标签:containable,cakephp,php
来源: https://codeday.me/bug/20191201/2078289.html