1

我想运行一个 findAll 查询,它只返回不存在相关记录的记录。

谁能告诉我这是如何在 Yii 中完成的?

只是一点点上下文,以防万一它有帮助 -

我正在开发一个调查应用程序,我正在使用的对象是-

问题调查回答问题

调查问题 HAS_MANY 已回答问题

因此,我想返回不存在相关 AnsweredQuestion 的 QuestionSurvey 模型。

提前致谢,

缺口

4

1 回答 1

2

如果你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();
于 2012-11-03T15:23:28.060 回答