我想运行一个 findAll 查询,它只返回不存在相关记录的记录。
谁能告诉我这是如何在 Yii 中完成的?
只是一点点上下文,以防万一它有帮助 -
我正在开发一个调查应用程序,我正在使用的对象是-
问题调查回答问题
调查问题 HAS_MANY 已回答问题
因此,我想返回不存在相关 AnsweredQuestion 的 QuestionSurvey 模型。
提前致谢,
缺口
我想运行一个 findAll 查询,它只返回不存在相关记录的记录。
谁能告诉我这是如何在 Yii 中完成的?
只是一点点上下文,以防万一它有帮助 -
我正在开发一个调查应用程序,我正在使用的对象是-
问题调查回答问题
调查问题 HAS_MANY 已回答问题
因此,我想返回不存在相关 AnsweredQuestion 的 QuestionSurvey 模型。
提前致谢,
缺口
如果你SurveyQuestion::model()->with('AnsweredQuestion')->findAll()
这将自动发生。因为它会将所有记录拉下来,并由一个连接在一起INNER JOIN
(除非你另有说明),因此如果没有答案,它不会拉下任何问题。
...我认为。
从您的评论中更新
确定,我把它缠在了我的头上。您实际上想查看所有不存在的地方SurveyQuestions
。在这种情况下,如果行不存在AnsweredQuestions
,您希望 Yii 执行一个将为连接表拉出 NULL 记录的操作。LEFT JOIN
然后,您需要向关系中添加一个条件,说明位置AnsweredQuestion.id is NULL
(或者无论您的主键是什么,实际上可以是任何字段,但主键是很好的做法)。
如果这是一个单一实例类型的事情而不是更永久的关系,那么你可以这样做:
SurveyQuestion::model()->with(array(
'AnsweredQuestion'=>array(
'joinType'=>'LEFT JOIN',
'condition'=>'`AnsweredQuestion`.`id` is NULL')
)->findAll();