Laravel - Фильтр с использованием данных из URL

У меня простой вопрос: я использовал 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'));
}

Вы не получаете никаких результатов. Добавьте ->get() после вашего where.

Marwelln 02.09.2018 15:58

спасибо в следующий раз, пожалуйста, ответьте, чтобы получить голоса

Chams Agouni 02.09.2018 16:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
70
3

Ответы 3

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

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

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

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

Я бы принял этот ответ как правильный, поскольку он объясняет немного лучше, чем мой, и дает вам более чистый код

null 02.09.2018 16:09

Для получать() вы извлекаете все строки, которые соответствуют предложениям where. (Обратите внимание, что для доступа ко всем строкам требуются циклы, иначе возникнут ошибки). если вы ищете конкретные данные, как в предложении where: Модель :: where ('поле', '=', 'значение') -> 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'));
    }

Другие вопросы по теме