我的数据库中有 2 个表...
实体
id int(11)
描述 varchar(50)
.....
公共(public)对象
....
model varchar(50) 我需要的模型(在本例中为 'Entita')
model_id int(11)
我想这样查询:
选择实体。*
来自实体
where NOT EXISTS (select * from publicobjects where publicobjects.model = 'Entita' and publicobjects.model_id = entita.id)
如何在不使用自定义查询的情况下使用 Cakephp 的模型函数来执行此操作?
谢谢
最佳答案
我相信您正在尝试从 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')));
关于mysql - 查找类似 'NOT EXISTS' 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1916286/