我在cakephp应用程序中有三个模型:ModelX
,ModelY
和ModelZ
。 ModelX的表有parent_id,lft和rght字段。模型之间的关联如下:
ModelX hasOne ModelY
ModelY belongsTo ModelX
ModelY hasMany ModelZ
ModelZ belongsTo ModelY
我在ModelX上有一个查询,它连接到ModelY和ModelZ,如下所示:
$this->ModelX->find('all', array(
'joins' => array(
array(
'table' => 'modelys',
'alias' => 'ModelY1',
'type' => 'left',
'conditions' => array(
'ModelX.id = ModelY1.modelx_id',
)
),
array(
'table' => 'modelzs',
'alias' => 'ModelZ1',
'type' => 'left',
'conditions' => array(
'ModelY1.id = ModelZ1.modely_id'
)
)
)
));
在这个查询的结果中,我有ModelX,ModelY但不是ModelZ的数据,我不知道为什么!!任何人都可以看到这个查询有什么问题吗?
答案 0 :(得分:-1)
我认为您的查询没有错。使用model_id(约定优于配置)似乎更实用,但如果您的设置需要它,那么请保持它。
只需在查询之前添加此内容。
$this->ModelX->recursive = 2;
在CakePHP Docs上,您需要设置所有链接模型的递归。请注意,这可能会更慢和/或返回不需要的数据。