我正在尝试创建一个显示从特定日期到特定日期的报告的报告页面。这是我当前的代码:
$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 = $now
我在这里有这个查询,但我不知道如何将其转换为雄辩的查询。
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
如何将上面的代码转换为雄辩的查询?先感谢您。
该whereBetween方法验证列的值是否介于两个值之间。
whereBetween
$from = date('2018-01-01'); $to = date('2018-05-02'); Reservation::whereBetween('reservation_from', [$from, $to])->get();
在某些情况下,您需要动态添加日期范围。根据的评论,您可以这样做:
Reservation::all()->filter(function($item) { if (Carbon::now()->between($item->from, $item->to)) { return $item; } });
如果您想添加更多条件,则可以使用orWhereBetween. 如果您想排除日期间隔,则可以使用whereNotBetween.
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.
whereIn
whereNotIn
whereNull
whereNotNull
whereDate
whereMonth
whereDay
whereYear
whereTime
whereColumn
whereExists
whereRaw
Laravel 文档关于 Where 子句。