CakePHP HABTM查找包含或不包含相关记录的所有行

时间:2017-06-28 10:01:01

标签: php mysql cakephp

我试图在CakePHP 2.x中选择有或没有相关HABTM关系的所有记录

我可以运行此查询来选择源和相关记录,但是是否也可以获取在同一查询中没有关联记录的记录?我发现查询是单独执行此操作,但不是在单个查询中。

如果没有关联记录,我希望Servicetemplatedoc为null或为空,因为Servicetemplate模型是我想要所有记录的地方。

$query = [
    'recursive' => -1,
    'fields' => [
        'Servicetemplate.*'
        'Servicetemplatedoc.*',
    ],
    'joins' => [
        [
            'table' => 'servicetemplatedocs_to_servicetemplates',
            'alias' => 'ServicetemplatedocsToServicetempaltes',
            'type' => 'LEFT',
            'conditions' => [
                'ServicetemplatedocsToServicetempaltes.servicetemplatedoc_id = Servicetemplatedoc.id',
            ],
        ],
        [
            'table' => 'servicetemplates',
            'type' => 'INNER',
            'alias' => 'Servicetemplate',
            'conditions' => 'Servicetemplate.id = ServicetemplatedocsToServicetempaltes.servicetemplate_id'
        ],
    ]
];

$result =  $this->find('all', $query);

非常感谢。

1 个答案:

答案 0 :(得分:0)

$query = [
'recursive' => -1,
'fields' => [
    'Servicetemplate.*'
    'Servicetemplatedoc.*',
],
'joins' => [        
    [
        'table' => 'servicetemplates',
        'type' => 'INNER',
        'alias' => 'Servicetemplate',
        'conditions' => 'Servicetemplate.id = ServicetemplatedocsToServicetempaltes.servicetemplate_id'
    ],
    [
        'table' => 'servicetemplatedocs_to_servicetemplates',
        'alias' => 'ServicetemplatedocsToServicetempaltes',
        'type' => 'LEFT',
        'conditions' => [
            'ServicetemplatedocsToServicetempaltes.servicetemplatedoc_id = Servicetemplatedoc.id',
        ],
    ],
];


$result =  $this->find('all', $query);

首先是Servicetemplates然后是Servicetemplatesdocs 扭转表格