如何使用Laravel和Eloquent在两个日期之间查询?
我正在尝试创建一个报告页面,以显示从特定日期到特定日期的报告。这是我当前的代码:
$now = date('Y-m-d');$reservations = Reservation::where('reservation_from', $now)->get();
这在普通SQL中的作用是select * from table where reservation_from = $now
。
我在这里有此查询,但我不知道如何将其转换为雄辩的查询。
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
如何将上面的代码转换为雄辩的查询?先感谢您。
回答:
$from = date('2018-01-01');$to = date('2018-05-02');
Reservation::whereBetween('reservation_from', [$from, $to])->get();
在某些情况下,您需要动态添加日期范围。根据@Anovative的评论,您可以执行以下操作:
Reservation::all()->filter(function($item) { if (Carbon::now->between($item->from, $item->to) {
return $item;
}
});
如果您想添加更多条件,则可以使用orWhereBetween
。如果您想排除日期间隔,则可以使用whereNotBetween
。
Reservation::whereBetween('reservation_from', [$from1, $to1]) ->orWhereBetween('reservation_to', [$from2, $to2])
->whereNotBetween('reservation_to', [$from3, $to3])
->get();
其他有用的where子句:whereIn
,whereNotIn
,whereNull
,whereNotNull
,whereDate
,whereMonth
,whereDay
,whereYear
,whereTime
,whereColumn
,whereExists
,whereRaw
。
以上是 如何使用Laravel和Eloquent在两个日期之间查询? 的全部内容, 来源链接: utcz.com/qa/429944.html