2017-06-21 84 views
0

日期范围内我有一个数据库表dateprices搜索与laravel

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(); 

是否有东西我的查询错误?

回答

2

您应该使用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(); 
+0

即使我将今天的日期作为开始日期并将明天的日期作为结束日期,该查询将给我表的所有行。 –

0

尝试用下面的查询,

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

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