CakePHP可包含的行为没有触发

时间:2012-12-07 12:39:58

标签: cakephp cakephp-2.0 containable

第一次使用Cake及其可包含的行为,但它没有按预期工作......或者根本没有。

我正在尝试获取产品配件清单。产品型号HABTM产品(别名'ProductRelation')。连接表是products_products,它有两个产品ID - product_id和related_id。这是违反这一点我想拉出给定product_id的配件列表(从related_id列驱动的产品)

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

在我的控制器中,即使没有条件,使用烹饪书中的参考文件进行快速测试也无法完全包含产品。

debug($this->Product->find('all', array('contain' => 'ProductRelation')));

..返回数据库中每个产品的数组,包含所有相关模型 - 图像,内容标签,评级,评论,定价等。我还没有尝试对此应用任何“条件”,因为所写的调用应该根据食谱......将数据限制在产品及其ProductRelation数据中。

任何提示?

1 个答案:

答案 0 :(得分:2)

好像你有递归。请尝试使用以下内容:

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation',
    'recursive' => -1
)));

如果适合您,您应该开始将containable添加到AppModel类并将recursive属性设置为-1。这将确保您只获得您要求的结果。

NB :对于HABTM,Cake不会join,因此您无法在任何条件下使用ProductRelation