不平等在cakephp3中不起作用
我无法使不平等的条件发挥作用。发生的情况是,它忽略了所有数据,因为不平等在cakephp3中不起作用,cakephp,cakephp-3.0,nullable,query-builder,comparison-operators,Cakephp,Cakephp 3.0,Nullable,Query Builder,Comparison Operators,我无法使不平等的条件发挥作用。发生的情况是,它忽略了所有数据,因为cancelled\u by字段已为null。如果cancelled\u by字段为null,则不等于不等于Tutor 这个小错误花费了我5天的错误数据。我犯了什么错误吗?一旦我删除了notequals条件,所有的数据都会按预期的那样被检索到 下面的两行是我用过的,两行都没用 'Lessons.cancelled_by not like' => '%Tutor%' 'Lessons.cancelled_by !='
cancelled\u by
字段已为null
。如果cancelled\u by
字段为null
,则不等于不等于Tutor
这个小错误花费了我5天的错误数据。我犯了什么错误吗?一旦我删除了notequals条件,所有的数据都会按预期的那样被检索到
下面的两行是我用过的,两行都没用
'Lessons.cancelled_by not like' => '%Tutor%'
'Lessons.cancelled_by !=' => 'Tutor'
使用->notEq()
范例
$query = $articles->find()
->where(function ($exp) {
return $exp
->eq('author_id', 2)
->eq('published', true)
->notEq('spam', true)
->gt('view_count', 10);
});
请在此处阅读更多内容这是此处海报的正确答案。如果那个人能把答案放在这里,等式运算符通常不能与SQL中的空值很好地交互。您可能应该添加一个“OR”条件,其中“cancelled_by IS”=>NULL,或者根据需要添加“NOT”
'Lessons.cancelled_by!='=>'Tutor'
是正确的,但它不适用于空值。
“Lessons.cancelled\u by不是”=>“NULL”
将适用于空值。我想两者都可以用。因此,结果只会是您需要的结果(cancelled_by!=“Tutor”和cancelled_by不为NULL)。等式运算符通常与SQL中的NULL值不能很好地交互。您可能应该添加一个“或”条件,该条件带有'cancelled\u by IS'=>NULL
,或IS NOT
,视情况而定。这与PHP无关。在SQL语言中,NULL
在定义上并不等于任何东西。如果我理解了这个问题,那么我就不会寻求帮助,也不会在cakephp3中发布这个问题。@jagguy很抱歉,如果我冒犯了你,我唯一的目的就是提供有关根本问题的信息。这应该如何解决NULL
值的问题notEq()
将产生与问题中所示完全相同的比较,即它将创建一个=代码>操作员。
$query = $articles->find()
->where(function ($exp) {
return $exp
->eq('author_id', 2)
->eq('published', true)
->notEq('spam', true)
->gt('view_count', 10);
});