我正在使用此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]);
如何在不破坏过滤器的情况下执行WHERE条件 我读过https://laravel.com/docs/5.6/queries#conditional-clauses我仍然无法弄清楚我做错了什么。
答案 0 :(得分:0)
如果使用$work->filter($request->all());
,filter()方法是集合类的方法,因为$ work现在是一个集合。
因此,您需要使用模型类
的filter()方法DB::table('workers')->where('career', 'artisan')->filter($request->all())->get();
应该有用。