gpt4 book ai didi

cakephp - 查找 hasMany 关系的条件 'NOT EXISTS'

转载 作者:行者123 更新时间:2023-12-02 16:26:28 24 4
gpt4 key购买 nike

这个问题类似于Find conditions like 'NOT EXISTS'除了它与 hasMany 关系一起使用之外。

表格是:

问题id bigint...

答案id bigintQuestion_id bigint...

关系是问题有很多答案。

该查询是为了查找没有答案的问题 ID。

SQL 可能看起来像

select id from questions where not exists 
(select * from answers where answers.question_id = questions.id)

快速的方法是使用该语句运行 query(),但我想知道是否有 CakePHP 方法。

我想避免 NOT IN 情况,因为这可能会导致数据库两次命中;第一个获取有答案的问题的所有问题 ID,第二个获取没有答案的问题的所有问题 ID。

另一种方法可能是将整个 where 子句作为单个条目放入条件数组中。我只是不确定这是否是最佳实践。

最佳答案

无需更改数据库,我最终使用了以下查询:

$questions = $this->Questions->find('all', array(
'fields' => array('id'),
'conditions' => array('not exists '.
'(select id from answers '.
'where answers.question_id = '.
'Question.id)'
)
));

关于cakephp - 查找 hasMany 关系的条件 'NOT EXISTS',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com