Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP可控制行为不点火_Cakephp_Cakephp 2.0_Containable - Fatal编程技术网

CakePHP可控制行为不点火

CakePHP可控制行为不点火,cakephp,cakephp-2.0,containable,Cakephp,Cakephp 2.0,Containable,第一次使用蛋糕和它的可控制的行为,但它没有像预期的那样工作。。。或者根本没有 我想得到一份产品的配件清单。产品型号HABTM产品(别名“ProductRelation”)。联接表是products\u products,它有两个产品id-product\u id和related\u id。与此相反,我想为给定的产品id提取附件列表(从related\u id列驱动的产品) 在我的产品模型中,我添加了$actsAs=array('Containable') 在我的控制器中,使用烹饪书中的参考快速测

第一次使用蛋糕和它的可控制的行为,但它没有像预期的那样工作。。。或者根本没有

我想得到一份产品的配件清单。产品型号HABTM产品(别名“ProductRelation”)。联接表是products\u products,它有两个产品id-product\u id和related\u id。与此相反,我想为给定的产品id提取附件列表(从related\u id列驱动的产品)

在我的产品模型中,我添加了$actsAs=array('Containable')

在我的控制器中,使用烹饪书中的参考快速测试containable根本无法包含产品,即使没有条件

debug($this->Product->find('all', array('contain' => 'ProductRelation')));
。。返回数据库中每个产品的数组,以及所有相关的模型-图像、内容选项卡、评级、评论、定价等。根据食谱,我没有尝试对此应用任何“条件”,因为书面调用应将数据限制为产品及其ProductRelation数据


有什么窍门吗?

看来你已经开了。尝试使用以下方法:

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation',
    'recursive' => -1
)));
如果这对您有效,您应该开始将
containable
添加到
AppModel
类中,并将
recursive
属性设置为
-1
。这将确保你只会得到你要求的结果


NB:Cake不会加入HABTM的
中,因此您不能在任何情况下使用
ProductRelation

我从未使用过habtm别名表,但您的contain不应该由一系列模型组成吗
'contain'=>array('ProductRelation')
您的AppModel中是否有此选项:
var$actsAs=array('Containable')
@BarryChapman他说他需要。'contain'不需要是数组,它在这里被转换为数组@TimJoyce-让我参考他所说的:
在我的产品模型中,我添加了$actsAs=array('Containable')他把它放在
产品
型号上。我声明将其添加到AppModel中-因为
Containable
需要在被包含的模型上处于活动状态,而不仅仅是在执行包含操作的模型上。将其添加到
AppModel
中,自然会使继承
AppModel
的所有模型都可以使用它。“Cake不会加入HABTM,因此在任何情况下都不能使用ProductRelation。”。别客气,谢谢。我用连接和运行条件解决了这个问题。我想这似乎是正确的其他职位。
debug($this->Product->find('all', array('contain' => 'ProductRelation')));