1

CakePHP アプリケーションにModelAandがあるとしましょう。とModelBの間の関連付けのタイプは次のとおりです。ModelAModelB

ModelA hasOne ModelB
ModelB belongsTo ModelB

フィールドが空でないModelA場合にのみ何かを返す必要があるfind()クエリが必要です(そうでない場合は空を返します)。私はこのようなことを試しましたが、ModelB のフィールドが空であっても、クエリの結果に ModelA と ModelB が返されます。numberModelBnumber

$this->ModelA->find('first', array(
    'contain' => array(
        'Model B' => array(
            'conditions' => array(
                 'ModelB.number IS NOT NULL'
            )
        )
    ), 
    'conditions' => array(
        'ModelA.id' => 13
    )
));

上記のように、条件をcontainonに入れましたModelB。ここで何をしようとしているのかが十分に明確であることを願っています。誰でも助けることができますか?

ありがとうございました

4

1 に答える 1

1

CakePHP によって実行されるクエリを常にチェックする必要があります。デバッグ レベル 2 を有効にすると、SQL ステートメントがページに表示されます。

あなたの場合、条件が正しく指定されていないと思われますNOT NULLおそらくこのようになるはずです。

$this->ModelA->find('first', array(
    'contain' => array(
        'Model B' => array(
            'conditions' => array(
                 'NOT' => array(
                     'ModelB.number' => NULL
                 )
            )
        )
    ), 
    'conditions' => array(
        'ModelA.id' => 13
    )
));
于 2013-06-07T22:29:54.630 に答える