Laravel 5.8中的多个位置条件不起作用

时间:2020-01-04 14:58:49

标签: laravel laravel-5.8

我正在尝试通过使用商品名称,日期从,日期到来获取数据

如果我正在使用

$data=add_items::select('*')->where('item_name',$request->iname)->orWhere('date',$request->datef)->orWhere('date',$request->datet)->get();

显示结果,但根据商品名称显示,未在特定日期显示结果

例如

[
    {"id":2,item_name":"Muesli","date":"2019-12-23"}, 
    {"id":3,"item_name":"Muesli","date":"2020-12-24"}
]

如果我在所有这三个条件下都使用简单位置,则不会返回结果

 $data=add_items::select('*')->where('item_name',$request->iname)->where('date',$request->datef)->where('date',$request->datet)->get();

3 个答案:

答案 0 :(得分:0)

您应该使用:

$data=add_items::select('*')->where(function($q) use ($request) {
   $q->where('item_name',$request->iname)
     ->orWhere('date',$request->datef)
     ->orWhere('date',$request->datet);
})->get();

详细了解parameter grouping

答案 1 :(得分:0)

尝试一下

使用where(function() use ($request) {

$data=add_items::select('*')->where(function($q) use ($request) {
   $q->where('item_name',$request->iname)
     ->orWhere('date',$request->datef)
     ->orWhere('date',$request->datet)
     ->get();
});

答案 2 :(得分:0)

似乎您需要过滤项目名称date fromdate to

我认为您可以使用whereBetween过滤日期:

$data=add_items::where('item_name', $request->iname)
               ->orWhereBetween('date',[$request->datef, $request->datet]);
               ->get();