【问题标题】:How to execute laravel WHERE along with EloquentFilter如何与 EloquentFilter 一起执行 laravel WHERE
【发布时间】: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


【解决方案1】:

如果你使用$work->filter($request->all());,filter()方法就是集合类的方法,因为$work现在是一个集合。

所以,你需要使用模型类的 filter() 方法

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

应该可以。

【讨论】:

  • 我得到 Method Illuminate\Database\Query\Builder\::Filter 不存在。
  • 试试 Worker::where('career', 'artisan')->filter($request->all())->get();
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2022-12-09
  • 2019-03-22
  • 2014-03-20
相关资源
最近更新 更多