Laravel 查找存在于 CarbonPeriod 中的记录

Laravel find records that exists in a CarbonPeriod

我在之后的 2 个日期之间创建了一个 CarbonPeroid 对象

$period = CarbonPeriod::create('2018-06-14', '2018-06-20');

现在我想过滤存在于该 $period 对象中的所有帖子。

我这样试过,但没用

        $posts = Posts::whereBetween(
            'created_at', [$period]
        )->get();

感谢任何帮助。

提供您的 CarbonPeriod 对象的开始和结束日期。

$posts = Posts::whereBetween(
        'created_at', [$period->startDate, $period->endDate]
    )->get();

我相信你想做一个 groupBy(day)CarbonPeriod

中的习惯

所以你可以这样做

$posts = Posts::whereBetween('created_at', ['2018-06-14', '2018-06-20'])
    ->get()
    ->groupBy(function($val) {
        return Carbon::parse($val->created_at)->format('d');
    });
$period = CarbonPeriod::create('2018-06-14', '2018-06-20');

//---Iterate Over the Period
foreach ($period as $date) {
    echo $date->format('Y-m-d');
}

//---Convert the period to an array of dates
$dates = $period->toArray();

可以直接在whereBetween方法中指定日期,不需要通过carbonPeriod创建日期。

注意,您将日期转换为日期格式。

像这样:

$posts = Posts::whereBetween(
            'created_at', [$startDate, $endDate]
        )->get();