我的数据库中有2个表...
Entita
id int(11)
describezione varchar(50)
.....
Publicobjects
....
model varchar(50)我需要的模型(在这种情况下'Entita')
model_id int(11)
我想这样查询:
select entita.*
from entita
where NOT EXISTS (select * from publicobjects where publicobjects.model = 'Entita' and publicobjects.model_id = entita.id)
如何在不使用自定义查询的情况下使用Cakephp的模型函数执行此操作?
由于
答案 0 :(得分:2)
我相信您正在尝试从Entita表中查找不在Publicobjects表中的行。假设这是正确的,这是MySQL查找它的SQL查询:
SELECT `entita`.*
FROM `entita`
LEFT JOIN `publicobjects` ON (`publicobjects`.`model` = 'entita'
AND `publicobjects`.`model_id` = `entita`.`id`)
WHERE `publicobjects`.`model_id` IS NULL
要使用CakePHP模型完成这项工作需要几个步骤。我对你的模型名称做了一些假设,但我可能错了,而且很容易修复。
首先将其添加到Entita模型中:
<?php
var $hasOne = array('Publicobject' => array(
'foreignKey' => 'model_id',
'conditions' => 'Publicobject.model = "Entita"'));
现在,您可以检查Publicobjects表中缺少的条目,如下所示:
<?php
$this->Entita->find('all', array('conditions' => array('Publicobject.model_id IS NULL')));