[英]How to use like with whereIn in laravel
我正在使用 laravel 8 并希望使用 whereIn 查询。 这是我的查询:
$details = explode(" ", $request->detail);
$doctors->whereIn('specialities.title', 'like', '%' . $details . '%')
->orWhereIn('users.first_name','like',$details."%")
->orWhere('users.last_name','like',$details."%");
但我收到错误:
{消息:“数组到字符串的转换”,异常:“ErrorException”,...}
异常:“ErrorException”行:39 消息:“数组到字符串的转换”
您收到错误是因为whereIn
期望有两个参数,一个是列名,第二个是数据array
,在您的情况下,第二个参数like
是一个字符串。
你可以这样做:
$details = explode(" ", $request->detail);
$doctors->where(function ($query) use($details) {
for ($i = 0; $i < count($details); $i++){
$query->orWhere('specialities.title', 'like', '%' . $details[$i] .'%');
}
})->orWhere(function ($query) use($details) {
for ($i = 0; $i < count($details); $i++){
$query->orWhere('users.first_name, 'like', '%' . $details[$i] .'%');
}
})->orWhere(function ($query) use($details) {
for ($i = 0; $i < count($details); $i++){
$query->orwhere('users.last_name', 'like', '%' . $details[$i] .'%');
}
});
我改变了我的逻辑,它对我有用并返回正确的结果:因为我正在从多个字段中搜索记录
$details = explode(" ", $request->detail);
$doctors->where('specialities.title', 'like', '%' . $details[0]. '%')
->orWhere('users.first_name','like',count($details) > 1 ? $details[0] :
$request->detail ."%")
->orWhere('users.last_name','like',count($details) > 1 ? $details[1] :
$request->detail ."%");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.