问题描述
我的项目中有 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