CakePHP:查找字段不为空的位置

时间:2009-07-28 21:54:02

标签: php cakephp

我需要选择User.site_url不为null的所有行。在常规MySQL查询中执行此操作非常简单,但是如何在CakePHP中完成?

手册提到以下内容:

array ("not" => array (
        "Post.title" => null
    )
)

我已尝试过以下内容,但它仍然会返回所有内容

$this->User->find('all', array('conditions' => array('not' => array('User.site_url'))));

9 个答案:

答案 0 :(得分:95)

我认为这就是你的意思:

$this->User->find('all', array( 
    'conditions' => array('not' => array('User.site_url' => null))
));

答案 1 :(得分:16)

你刚刚错过了空

$this->User->find('all', array('conditions' => array('not' => array('User.site_url'=>null))));

答案 2 :(得分:12)

在Cake中,WHERE条件是通过连接键和值从'conditions'元素构造的。这意味着如果您愿意,您实际上可以跳过提供密钥。 E.g:

array('conditions' => array('User.id'=>1))

完全等同于

array('conditions' => array('User.id = 1'))

基本上,你可以通过以下方式解决问题:

$this->User->find('all', array('conditions' => array('User.site_url IS NOT NULL')));

答案 3 :(得分:3)

你也可以试试这个,

$this->User->find('all', array('conditions' => array('User.site_url <>' => null));

这对我来说很好..

答案 4 :(得分:2)

简单查询:

$this->User->find('all', array(
     'conditions' => array(
         'User.site_url IS NOT NULL'
));

对于cakephp 3.X

 $table = TableRegistry::get('Users');
 $assessmentComments = $table
      ->find()
      ->where(function (QueryExpression $exp, Query $q) {
            return $exp->isNotNull('site_url');
        })
      ->all();

答案 5 :(得分:1)

这对我来说很好:

$this->User->find('all', array('conditions' => array('User.site_url !=' => null));

答案 6 :(得分:1)

请尝试null而不是$this->User->find('all', array('conditions' => array('User.site_url <>' => ''));

StringSignature

答案 7 :(得分:1)

此范围正确!(ctlockey)

$this->User->find('all', array('conditions' => array('not' => array('User.site_url' =>null))));

但是,我在不同版本的MySql和MariaDb上使用时返回的结果不一致。 我相信一点直接的sql还不错,因此可以确保返回的完整性。

因此,我做了以下事情:

$Obj->find()->where(['field_a IS NULL', 'field_b IS NOT NULL'])->all();

答案 8 :(得分:0)

它为我工作

$this->set('inventory_masters',$this->InventoryMaster->find('all',array('order'=>$orderfinal,'conditions' => array('InventoryMaster.id' => $checkboxid,'not' => array('InventoryMaster.error'=>null)))));