【问题标题】:WhereNot clause are not working in laravel7Where Not 子句在 laravel 7 中不起作用
【发布时间】:2020-09-02 22:30:57
【问题描述】:

**我在下面的脚本中使用了 whereNot 子句。即显示以下错误。除 cancel 数据外,其余数据将显示。谁能帮帮我。

SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列 'not'(SQL:从 client 中选择 count(*) 作为聚合作为 c 左连接 users 作为 uc.telemarketar = u.id 上左连接dispositiondc.id = @9876543@33@.client = @9876 处**

 $datas= DB::table('client as c') 
                     ->select(
                    'c.id as clid',
                    'u.id as uid',
                    'd.id as did',
                    'd.bgcolor as bgcolor',
                    'd.fcolor as fcolor',
                    'c.customerName as customerName',
                    'c.email as email',
                    'c.streetaddress as streetaddress',
                    'c.city as city',
                    'c.landNumber as landNumber',
                    'u.codenumber',
                     )       
                     ->leftJoin('users as u', 'c.telemarketar', '=', 'u.id')
                     ->leftJoin('disposition as d', 'c.id', '=', 'd.client')
                     ->whereNot('bgcolor','=','CANCEL')
                     ->orderBy('c.id', 'desc')        
                     ->paginate(100); 

【问题讨论】:

    标签: mysql laravel eloquent


    【解决方案1】:

    Laravel 中没有 whereNot() 函数。您正在寻找:

    ...
    ->where('bgcolor', '!=', 'CANCEL')
    ...
    

    您收到该错误的原因是 ->where{Noun}() 是 Laravel 中的一个神奇函数,其中 {Noun} 用作查询中的列(除非它作为特定函数存在,例如 ->whereHas())。

    由于没有->whereNot() 函数,它使用not 作为列:名称:

    WHERE `not` ...
    

    这是无效的,因为您的表格确实没有not 列。

    【讨论】:

    • 是的,知道如何解决这个问题,什么是正确的代码
    • ->whereNot('bgcolor','=','CANCEL') 替换为->where('bgcolor', '!=', 'CANCEL'),正如我在回答中所说...
    • ->where('bgcolor', '!=', 'CANCEL') 我用过这个,但我没有得到所有数据。
    • 那是一个单独的问题。我提供的答案是解决您发布的错误。如果错误消失,请考虑接受此答案并关闭您的问题。如果您想将问题更改为“为什么我没有获取数据”,则必须大量修改您的问题,这会使答案无效并违背如何使用 Stackoverflow。
    【解决方案2】:

    使用这个。

    $datas= DB::table('client as c') 
                         ->select(
                        'c.id as clid',
                        'u.id as uid',
                        'd.id as did',
                        'd.bgcolor as bgcolor',
                        'd.fcolor as fcolor',
                        'c.customerName as customerName',
                        'c.email as email',
                        'c.streetaddress as streetaddress',
                        'c.city as city',
                        'c.landNumber as landNumber',
                        'u.codenumber',
                         )       
                         ->leftJoin('users as u', 'c.telemarketar', '=', 'u.id')
                         ->leftJoin('disposition as d', 'c.id', '=', 'd.client')
                         ->where('bgcolor','<>','CANCEL')
                         ->orderBy('c.id', 'desc')        
                         ->paginate(100); 
    

    【讨论】:

      猜你喜欢
      • 2018-01-21
      • 2015-05-24
      • 2019-06-15
      • 2016-11-13
      • 2015-01-27
      • 2014-01-26
      • 1970-01-01
      • 2018-03-08
      • 2016-04-10
      相关资源
      最近更新 更多