laravel 5.8中的多个Where条件不起作用

Posted

技术标签:

【中文标题】laravel 5.8中的多个Where条件不起作用【英文标题】:Multiple Where condition in laravel 5.8 not working 【发布时间】:2020-04-22 19:15:24 【问题描述】:

我正在尝试通过使用项目名称、日期、日期来获取数据

如果我正在使用

$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"
]

如果我在所有这三个条件下使用简单的 where 它不会返回任何结果

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

【问题讨论】:

这能回答你的问题吗? How to query between two dates using Laravel and Eloquent? 不,这不是。 【参考方案1】:

你应该使用:

$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了解详情。

【讨论】:

"未定义变量:q"【参考方案2】:

看来你需要过滤项目名称,date fromdate to

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

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

【讨论】:

@guzu do 你的意思是你想要item_namedatefdatet之间的日期,或者你想要item_name或者datefdatet之间的日期? 第二个选项

以上是关于laravel 5.8中的多个Where条件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8:验证多个输入

Laravel 5.8,在 where 子句中带有 Count(*) 的棘手子查询

Where-Object 多个条件不起作用

Laravel 集合 - 多个 where 条件

laravel 雄辩的多个表 where 条件

Laravel 5.8多态关系`nullableMorphs`不起作用