我有一个数据库表dateprices
id|tour_id|start|end|price
我希望在2017-06-20
和2017-07-11
我编写了以下查询,但它返回一个空集合:
$dates = DatePrice::where('tour_id','=',$request->product_id)
->where('start', 'like', '%'.$request->start.'%')
->where('end', 'like', '%'.$request->end.'%')
->get();
我的查询有问题吗?
答案 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();