2016-12-01 6 views
0

Im делает функцию поиска, в которой пользователи могут вводить имя. Это им запрос делает:Поиск с отношениями - Laravel 5.3

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

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

     return $results; 
    } 

Что поражает это:

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

Мне также нужно искать «местоположение» наряду с этим запросом, проблема является ее в diffrent таблице. Имя модели - Location. Мой вопрос в том, как я могу привязать модель к этому запросу?

Так в идеале, я хотел бы сделать это для запроса:

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

Кстати, в вашем '$ query', это не 'request() -> get ('query);', он должен быть следующим: '$ request-> get (' query);' – GabMic

+0

нет, я мог бы использовать его таким образом. – David

+0

Я знаю, что вы можете, но вы создаете запрос, так почему бы не использовать его? просто говорю. – GabMic

ответ

1

Для поиска Вы можете использовать searchable черту. так что вы можете сделать это:

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

, если существует связь между листингом и местоположением, вы можете использовать Laravel realations, чтобы сделать что-то вроде этого

Listing::where('live',true) 
     ->search($query) 
     ->location 
     ->search($query2) 
     ->paginate(15); 
Смежные вопросы