简体   繁体   English

如何在laravel中使用whereIn

[英]How to use like with whereIn in laravel

i am using laravel 8 and want use like query with whereIn.我正在使用 laravel 8 并希望使用 whereIn 查询。 it's my query:这是我的查询:

       $details = explode(" ", $request->detail);
        $doctors->whereIn('specialities.title', 'like', '%' . $details . '%')
            ->orWhereIn('users.first_name','like',$details."%")
        ->orWhere('users.last_name','like',$details."%");

but i get errors:但我收到错误:
{message: "Array to string conversion", exception: "ErrorException",…} {消息:“数组到字符串的转换”,异常:“ErrorException”,...}

exception: "ErrorException" line: 39 message: "Array to string conversion"异常:“ErrorException”行:39 消息:“数组到字符串的转换”

You are getting the error because whereIn expect two parameter one is column name and second one is the array of data and in you case second parameter is like which is a string.您收到错误是因为whereIn期望有两个参数,一个是列名,第二个是数据array ,在您的情况下,第二个参数like是一个字符串。

You can do it like this:你可以这样做:

$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] .'%');
         }      
    });

I changed my logic and it work for me and return correct result: because i am searching records from multiple fields我改变了我的逻辑,它对我有用并返回正确的结果:因为我正在从多个字段中搜索记录

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM