Laravel 在 where 子句上的非法运算符和值组合

问题描述

我的项目中有 10 多个控制器。它们都具有相同的代码,只是表名不同。

这些控制器中的 2 个控制器的共享主机存在“非法运算符和值组合”的问题。令人惊讶的是,其他控制器可以正常工作而不会犯这样的错误。 也许我忽略了一些东西。

这就是“非法运算符和值组合”问题的由来。

$tarifs = DB::table('tarifs as tarif')
            ->join('companies as comp','tarif.company_id','=','comp.id')
            ->join('categories as cats','tarif.catid','cats.id')
            ->where('tarif.company_id','<',env('COMKEY'))
            ->get(['tarif.*','comp.name','comp.photo as cimage','cats.cat_uz']);

将此行显示错误 ->where('tarif.company_id',env('COMKEY'))

这个工作没有错误

 $minutes = DB::table('minutes as minute')
        ->join('companies as comp','minute.company_id','comp.id')
        ->join('categories as cats','minute.catid','cats.id')
        ->where('minute.company_id',env('COMKEY'))
        ->get(['minute.*','cats.cat_uz']);

项目在localhost上运行正常,没有错误。 共享和本地PHP版本一样7.4

解决方法

env('COMKEY') 返回空值时,您将收到此错误:

InvalidArgumentException 带有消息“非法运算符和值组合”。

代码:

$minutes =  DB::table('tarifs as tarif')
            ->join('companies as comp','tarif.company_id','=','comp.id')
            ->join('categories as cats','tarif.catid','cats.id')
            ->when($comKey,function($query) use ($comKey){
              logger()->info('Comkey value is not null',[
                'comKey'=> $comKey
              ]);
              return $query->where('tarif.company_id','<',env('COMKEY'));
            },function($query) use ($comKey){
              logger()->info('Comkey value is null');
              return $query;
            })
        ->dd();

请使用上述查询来调试您的查询。

如果该值是从 env 返回的,则日志将类似于

Comkey value is not null {"comKey":"RandomKey"} 

如果该值是从 env 返回的,则日志将类似于:

Comkey value is null  

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...