Siraj Ali
Siraj Ali

Reputation: 604

How to use like with whereIn in laravel

i am using laravel 8 and want use like query with 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",…}

exception: "ErrorException" line: 39 message: "Array to string conversion"

Upvotes: 0

Views: 672

Answers (2)

Exterminator
Exterminator

Reputation: 1246

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.

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

Upvotes: 1

Siraj Ali
Siraj Ali

Reputation: 604

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 ."%");

Upvotes: 1

Related Questions