首页 > 解决方案 > 在接下来的 x 天中使用 Laravel 和 Carbon 播种 MySQL 表

问题描述

我正在构建一个功能来构建未来 5 年的播放列表。在我的表中,MySQL 日期是我的标识符,并且与另一个列出所有播客的表有关系。

从今天到未来 5 年,我的问题是没有找到足够的关于播种表的指导。它实际上意味着能够运行 Laravel 种子,为未来 5 年内的每一天生成一个插入查询。

我目前正在使用 Laravel 5.8 并使用 Carbon。我可以简单地执行一个 foreach 函数来生成这些数据,但是我认为它并不优雅,因此我想知道是否可以使用更好的方法来生成未来 5 年的日期?下面的代码可以在循环函数中工作,即今天创建,然后添加一天以在接下来的 5 年内继续重复此操作,但它再次看起来不是一个好方法,或者我错了?

$mutable = Carbon::now();
$immutable = CarbonImmutable::now();
$modifiedMutable = $mutable->add(1, 'day');

理想情况下,它应该返回类似的日期

id: 1, date: 2019-06-05
id: 2, date: 2019-06-06
id: 3, date: 2019-06-07
...

标签: laravelphp-carbonlaravel-seeding

解决方案


最后用循环完成了,似乎没有其他优雅的方法可以做到这一点,为那些可能考虑做我试图实现的事情的人分享答案。

    $startDate = new Carbon('2019-06-15');
    $endDate = new Carbon('2025-06-15');
    $all_dates = array();
    while ($startDate->lte($endDate)){
      $all_dates[] = $startDate->toDateString();
      $startDate->addDay();
    }
    dd($all_dates);

推荐阅读