【发布时间】:2018-05-30 17:03:55
【问题描述】:
我正在使用这个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 我仍然无法弄清楚我做错了什么。
【问题讨论】:
-
$workers = $work->filter($request->all());不是为你工作吗? -
我收到此错误“类型错误:传递给 Illuminate\Support\Collection::filter() 的参数 1 必须是可调用的或 null,给定数组,在 .../app\Http\Controllers 中调用\WorkerController.php 在第 28 行“@Bart
-
请在此处laravel.com/docs/5.6/collections#method-filter 阅读有关 Eloquent 过滤器的更多信息,并为此创建您自己的函数...
-
请原谅我的闯入,我刚刚注意到.. 与您的
->filter()结合的where在哪里?就我看到的雄辩过滤器而言,它添加了一堆wheres。看到$work和$workers了吗?我的意思是,您创建了两个不同的查询,我们不知道您在接收器上对它做了什么(阅读:视图)。我相信你只对$work做事,而不会弄乱$workers。 -
@Umar745 请包括对代码的更改,最终出现错误...
标签: laravel eloquent where-clause laravel-5.5