Laravel - Фильтр, используя данные из URL - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть простой вопрос, которым я пользуюсь django, и теперь я перешел на Laravel и застрял в этом на 2 дня

У меня есть форма на странице индекса, которая будет отправлять ввод на страницу поиска работы

Раньше я делал это в Django, но здесь это не работает

public function job_search(Request $request) {
    $keyword = $request->get('keywords');
    $location = $request->get('location');

    if ($keyword) {
        $jobs = Job::where('name', 'like', '%'.$keyword.'%');

        if ($location) {
            $jobs = Job::where('location', 'like', '%'.$location.'%')->where('name', 'like', '%'.$keyword.'%');
        }

    }

    if ($location) {
        $jobs = Job::where('location', 'like', '%'.$location.'%');
    }

    return view('jobs.job_search', compact('jobs','keyword','location'));
}

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

вы перезаписываете результат задания, если присутствуют как ключевые слова, так и местоположение попробуй вот так

public function job_search(Request $request) {
$keyword = $request->keywords;
$location = $request->location;
$q = new Job;
if ($keyword) {
    $q->where('name', 'like', '%'.$keyword.'%');
}
if ($location) {
    $q->where('location', 'like', '%'.$location.'%');
}
$jobs = $q->get();
return view('jobs.job_search', compact('jobs','keyword','location'));
}
0 голосов
/ 02 сентября 2018

Для get () вы извлекаете все строки, которые соответствуют предложениям where. (Обратите внимание, что петли необходимы для доступа ко всем строкам, или у вас есть некоторые ошибки). если вы ищете конкретные данные, как в предложении where: Model :: where ('field', '=', 'value') -> get ();
Вы не используете -> get ()

  public function job_search(Request $request) {
        $keyword = $request->get('keywords');
        $location = $request->get('location');

        if ($keyword) {
            $jobs = Job::where('name', 'like', '%'.$keyword.'%')->get();

            if ($location) {
                $jobs = Job::where('location', 'like', '%'.$location.'%')->where('name', 'like', '%'.$keyword.'%')->get();
            }

        }

        if ($location) {
            $jobs = Job::where('location', 'like', '%'.$location.'%')->get();
        }

        return view('jobs.job_search', compact('jobs','keyword','location'));
    }
0 голосов
/ 02 сентября 2018

У вас проблема с добавлением ->get() в конце. Вы просто строите запрос. Учитывая это, ваш код должен быть:

$jobs = Job::where('location', 'like', '%'.$location.'%')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...