Я пытаюсь использовать несколько фильтров в моей базе данных с Laravel - PullRequest
0 голосов
/ 04 июня 2018

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

мой контроллер Register: allCandidates

public function allCandidates(){

        $candidates = new Candidate;

        $queries = [];

        $columns = [
            'field', 'qualification',
        ];

        foreach ($columns as $column) {
            if (request()->has($column)) {
                $candidates = $candidates->where($column, request($column));
                $queries[$column] = request($column);
            }
        }
        if (request()->has('sort')) {
            $candidates =$candidates->orderBy('surname', request('sort'));
            $queries['sort'] = request('sort');
        }
        $candidates =$candidates->paginate(10)->appends($queries);
        return view('contact.candidates', compact('candidates'));
    }

1 Ответ

0 голосов
/ 04 июня 2018

Перепишите код следующим образом:

public function allCandidates(){

        $candidates = new Candidate;

        $columns = [
            'field', 'qualification',
        ];

        foreach ($columns as $column) {
            if (request()->has($column)) {
                $candidates->where($column, request($column));
            }
        }
        if (request()->has('sort')) {
            $candidates->orderBy('surname', request('sort'));
        }
        $candidates->paginate(10);
        return view('contact.candidates', compact('candidates'));
    }

Не нужно повторно инициализировать переменную $андидатов после однократного выполнения.Просто добавьте фильтры или вызовите другие функции с объектом $андидаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...