在laravel中搜索日期范围

时间:2017-06-21 06:35:12

标签: php mysql laravel laravel-5.4

我有一个数据库表dateprices

id|tour_id|start|end|price

我希望在2017-06-202017-07-11

之间的日期之间开始和结束所有旅行的价格

我编写了以下查询,但它返回一个空集合:

$dates = DatePrice::where('tour_id','=',$request->product_id)
  ->where('start', 'like', '%'.$request->start.'%')
  ->where('end', 'like', '%'.$request->end.'%')
  ->get();

我的查询有问题吗?

3 个答案:

答案 0 :(得分:3)

您应该使用whereBetween()函数,如下所示:

$dates = DatePrice::where('tour_id','=',$request->product_id)
    ->whereBetween('start', array('2017-06-20', '2017-07-11'))
    ->whereBetween('end', array('2017-06-20', '2017-07-11'))
    ->get();

答案 1 :(得分:0)

尝试使用以下查询,

如果只有一个条件,那么您可以使用whereBetween()。 如果您想添加更多条件,可以使用orWhereBetween()

$dates = DatePrice::where('tour_id','=',$request->product_id)
  ->whereBetween('start', 'like', '%'.$request->start.'%')
  ->orWhereBetween('end', 'like', '%'.$request->end.'%')
  ->get();

答案 2 :(得分:0)

您可以通过指定列名(日期)进行搜索,就像这样;

$dates = DatePrice::where('tour_id','=',$request->product_id)
         ->whereBetween('date', array($request->from_date, $request->to_date))
         ->get();