David
David

Reputation: 1997

Search with Relationship - Laravel 5.3

Im making a search functionality where users can type in a name. This is the query im doing:

   public function api(Request $request)
    {
        $query = request()->get('query');

        $results = Listing::searchAndCache($query);

        return $results;
    }

Which hits this:

 public static function searchAndCache($query)
    {
        return self::where('name','like','%'.$query.'%')->where('live',true)->paginate(15);
    }

I also need to search 'location' along with this query, the problem is its in a diffrent table. The models name is Location. My question is how would I attach the model Location to this query?

So ideally, I would want to do this for the query:

 public static function searchAndCache($query)
    {
        return self::where('name','like','%'.$query.'%')->where('region','like','%'.$query.'%')->where('live',true)->paginate(15);
    }

Upvotes: 0

Views: 179

Answers (1)

Bara' ayyash
Bara' ayyash

Reputation: 1935

For search you can use searchable trait. so you can do this :

Listing::where('live',true)->search($query)->paginate(15);

if there is a relation between Listing And Location, you can use Laravel realations to do something like this

Listing::where('live',true)
         ->search($query)
         ->location
         ->search($query2)
         ->paginate(15);

Upvotes: 1

Related Questions