Как выполнить laravel ГДЕ вместе с EloquentFilter - PullRequest
0 голосов
/ 30 мая 2018

Я использую этот EloquentFilter для фильтрации базы данных на внешнем интерфейсе, и работает контроллер ниже

public function indexArtisan(Request $request)
{
    $workers = Worker::filter($request->all())->get();
    $states = DB::table('states')->pluck("name", "id");
    return view ('artisans', compact('states'))->with(['workers' => $workers]);
}

Однако, когда я пытаюсь использовать запрос WHERE для добавления условий к даннымвызван с контроллером, условие WHERE выполнено и данные возвращены, но мой фильтр больше не работает.domain.com?name=xyz

public function indexArtisan(Request $request)
{

    $work = DB::table('workers')->where('career', '=', 'artisan')->get();
    $workers = Worker::filter($request->all())->get();
    $states = DB::table('states')->pluck("name", "id");

    return view ('artisans', compact('states','work'))->with(['workers' => $workers]);
}

Также пробовал

$work = DB::table('workers')->where('career', '=', 'artisan')->get();
    $worker = $work->filter($request->all());
    $states = DB::table('states')->pluck("name", "id");

    return view ('artisans', compact('states'))->with(['worker' => $worker]);

Я получаю Error screen

Как выполнить WHEREсостояние без нарушения фильтра Я прочитал https://laravel.com/docs/5.6/queries#conditional-clauses Я до сих пор не могу понять, что я делаю неправильно.

1 Ответ

0 голосов
/ 30 мая 2018

Если вы используете $work->filter($request->all());, то метод filter () является методом класса коллекции, потому что $ work теперь является коллекцией.

Итак, вам нужно использовать метод filter () класса модели

DB::table('workers')->where('career', 'artisan')->filter($request->all())->get();

должно работать.

...