仅当关联模型上的字段值不为空cakephp时才返回查询结果

时间:2013-06-07 22:14:46

标签: php cakephp cakephp-1.3 php-5.3

假设我在CakePHP应用程序中有ModelAModelBModelAModelB之间的关联类型如下:

ModelA hasOne ModelB
ModelB belongsTo ModelB

我希望ModelA上的find()查询只有在number的{​​{1}}字段不为空时才返回内容(否则返回空)。我试过这样的东西但是我的ModelA和ModelB仍然在查询结果中返回,即使ModelB的ModelB字段为空:

number

如您所见,我将条件放在$this->ModelA->find('first', array( 'contain' => array( 'Model B' => array( 'conditions' => array( 'ModelB.number IS NOT NULL' ) ) ), 'conditions' => array( 'ModelA.id' => 13 ) )); contain上。我希望我能在这里做的很清楚。有人可以帮忙吗?

谢谢

1 个答案:

答案 0 :(得分: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
    )
));