不平等在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);
    });