第一次使用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数据中。
任何提示?
答案 0 :(得分:2)
好像你有递归。请尝试使用以下内容:
debug($this->Product->find('all', array(
'contain' => 'ProductRelation',
'recursive' => -1
)));
如果适合您,您应该开始将containable
添加到AppModel
类并将recursive
属性设置为-1
。这将确保您只获得您要求的结果。
NB :对于HABTM,Cake不会join
,因此您无法在任何条件下使用ProductRelation
。