Поскольку ясно, что ваш метод search()
никогда не вызывается, мы переместили содержимое вашей функции в ваш метод index()
.
public function index(Request $request) {
$landmarks = $request->input('location');
$locations = Locations::with(['landmarks', function($query) use ($landmarks) {
$query->where('landmarks', 'LIKE', '%' . $landmarks . '%');
}])->get();
return view('pages.search', compact('locations'));
}
Но тогда вы получили еще одну ошибку:
mb_strpos() expects parameter 1 to be string, object given
Поскольку ваша with()
функция неверна, правильный способ сделать это:
with(['landmarks' => function ($query) use($landmarks) {
$query->where('landmarks', 'LIKE', '%' . $landmarks . '%');
}])
Кроме того, я думаю, что вы пытаетесь получить все местоположения , у которых ориентир соответствует данному ключевому слову. Таким образом, вместо with()
, , который стремится загрузить отношение , вы можете также изменить его на whereHas()
, чтобы отфильтровывал результаты, если в модели . * 1023 существует отношение. *
Ваш код теперь будет выглядеть так:
$locations = Locations::whereHas('landmarks', function($query) use ($landmarks) {
$query->where('landmarks', 'LIKE', '%' . $landmarks . '%');
})->get();