2017-06-21 83 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();