Cakephp join不返回关联的模型数据


cakephp join does not return associated model data

我在cakephp应用程序中有三个模型:ModelX, ModelYModelZ。ModelX的表包含parent_id、left和right字段。模型之间的关联如下:

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, modelly但没有ModelZ的数据,我不知道为什么!!有人知道这个问题有什么问题吗?

我认为你的问题没有问题。使用model_id(约定优于配置)似乎更实用,但如果您的设置需要它,请保留它。

在你的查询前加上这个。

$this->ModelX->recursive = 2;

在CakePHP文档中,你需要为所有链接的模型设置递归。注意,这可能会更慢,并且/或者返回不需要的数据。