Laravel 4.2 Eloquent获取日期之间的帖子(事件)

时间:2015-07-30 16:05:49

标签: laravel eloquent

假设我的开始日期是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条款?如果可能的话

1 个答案:

答案 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}}创建并且晚于此结束的事件不会。