我需要选择User.site_url不为null的所有行.在常规MySQL查询中执行此操作非常简单,但是如何在CakePHP中完成此操作?
手册提到了以下内容:
array ("not" => array (
"Post.title" => null
)
)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但它仍然返回一切
$this->User->find('all', array('conditions' => array('not' => array('User.site_url'))));
Run Code Online (Sandbox Code Playgroud)
g33*_*z0r 95
我想这就是你的意思:
$this->User->find('all', array(
'conditions' => array('not' => array('User.site_url' => null))
));
Run Code Online (Sandbox Code Playgroud)
Pet*_*dIt 16
你刚刚错过了null
$this->User->find('all', array('conditions' => array('not' => array('User.site_url'=>null))));
Run Code Online (Sandbox Code Playgroud)
小智 13
在Cake中,WHERE条件是通过连接键和值从'conditions'元素构造的.这意味着如果您愿意,您实际上可以跳过提供密钥.例如:
array('conditions' => array('User.id'=>1))
Run Code Online (Sandbox Code Playgroud)
完全等同于
array('conditions' => array('User.id = 1'))
Run Code Online (Sandbox Code Playgroud)
从本质上讲,您可以通过以下方式解决您的问题:
$this->User->find('all', array('conditions' => array('User.site_url IS NOT NULL')));
Run Code Online (Sandbox Code Playgroud)
对于简单查询:
$this->User->find('all', array(
'conditions' => array(
'User.site_url IS NOT NULL'
));
Run Code Online (Sandbox Code Playgroud)
对于cakephp 3.X
$table = TableRegistry::get('Users');
$assessmentComments = $table
->find()
->where(function (QueryExpression $exp, Query $q) {
return $exp->isNotNull('site_url');
})
->all();
Run Code Online (Sandbox Code Playgroud)