如何在对象选择上更改静态选择?

时间:2018-09-28 14:43:14

标签: laravel laravel-5 eloquent laravel-5.6

我可以使用下面的示例代码从表中选择数据

$ab = Order::where('user_id', 2);
    ->where('stock_id', 30);
    ->get();     
dd($ab);

还可以,但是我需要创建搜索条件,我想在下面创建这样的查询

$ab = new Order();
!empty($request->user_id) ? $ab->where('user_id', $request->user_id) : false;
!empty($request->stock_id) ? $ab->where('stock_id', $request->stock_id) : false;
dd($ab->get());

并且不起作用。有人可以给我一个提示吗?

1 个答案:

答案 0 :(得分:1)

代替

$ab = new Order();

您可以使用:

$ab = Order::query();

开始新查询。

您还可以像这样使用when闭包:

$ab = Order::query()->when($request->filled('user_id'), function($q) {
   $q->where('user_id', $request->user_id)
})->when($request->filled('stock_id'), function($q) {
   $q->where('stock_id', $request->stock_id)
})->get();
dd($ab);