我需要选择User.site_url不为null的所有行。在常规MySQL查询中执行此操作非常简单,但是如何在CakePHP中完成?
手册提到以下内容:
array ("not" => array (
"Post.title" => null
)
)
我已尝试过以下内容,但它仍然会返回所有内容
$this->User->find('all', array('conditions' => array('not' => array('User.site_url'))));
答案 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)))));