我的项目中有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.*', 'comp.name', 'cats.cat_uz']);
项目在本地主机上正常运行,没有错误。共享和本地php版本是一样的7.4
当env('COMKEY')
返回null时,您将得到这个错误:
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