1

関連するレコードが存在しないレコードのみを返す findAll クエリを実行したいと考えています。

これが Yii でどのように行われるか教えてもらえますか?

それが役立つ場合に備えて、ほんの少しのコンテキスト-

私は調査アプリケーションに取り組んでいます。私が取り組んでいるオブジェクトは-

QuestionSurvey Answered質問

SurveyQuestion HAS_MANY AnsweredQuestion

したがって、関連する AnsweredQuestion が存在しない QuestionSurvey モデルを返したいと考えています。

前もって感謝します、

ニック

4

1 に答える 1

2

あなたの場合、SurveyQuestion::model()->with('AnsweredQuestion')->findAll()これは自動的に行われます。で結合されたすべてのレコードをまとめてプルダウンするためINNER JOIN(別の方法で指示しない限り)、回答がない場合は質問をプルダウンしません。

...おもう。

あなたのコメントからOKを更新
してください、私はそれを頭に巻きつけました。実際には、存在しないSurveyQuestions場所をすべて表示したいと考えています。この場合、行が存在しない場合に、結合されたテーブルの NULL レコードをプルダウンする をAnsweredQuestionsYii に実行させたいとします。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 に答える