假设我的开始日期是2015-07-30(今天),结束日期是2015-08-01。好的,我想看明天的活动。如何在2015-07-31展示此活动?
我已经尝试过这个:
$tomorrow = Carbon::tomorrow(); // 2015-07-31 00:00:00
$dayAfterTomorrow = Carbon::tomorrow()->addDay(); // 2015-08-01 00:00:00
$events = $events->where(function ($query) use ($tomorrow, $dayAfterTomorrow) {
$query->orWhereBetween('start_date', [$tomorrow, $dayAfterTomorrow]);
$query->orWhereBetween('end_date', [$tomorrow, $dayAfterTomorrow]);
});
该查询未显示明天日期的事件,因为明天是2015-07-31,事件结束日期是2015-08-31。也许我需要使用if条款?如果可能的话
答案 0 :(得分:2)
$events = $events->where(function ($query) use ($start, $end) {
$query->where('start_date', '<', $end)
->where('end_date', '>=', $start);
});
start_date小于$ end且end_date大于或等于$ start的所有事件。
如果您算作$start = TOMORROW
和$end = DAY_AFTER_TOMORROW
,那么您可以看到它将抓取在$end
之前创建的所有事件,然后它只会保留结尾大于$start
的事件。 2014-04-01
。因此,仍会包含在2015-07-31
上创建并在2015-08-01
结束的事件。但是为{{1}}创建并且晚于此结束的事件不会。