LoginSignup
2
0

More than 3 years have passed since last update.

LaravelのFactoryで連続した日付データの挿入

Last updated at Posted at 2020-09-26


Laravelのseederやらfactoryについて勉強中、連続した日付データの挿入に苦戦したので備忘録




schedule_table

id title schedule_day
1 aaa 2020-09-27
2 bbb 2020-09-28
3 ccc 2020-09-29
4 ddd 2020-09-30
5 eee 2020-10-01

↑こんな感じで日付が連続したテストデータが欲しかった




実行するシーダーファイルを記述

DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call([
            UserSeeder::class,
            ScheduleSeeder::class
        ]);
    }
}



対象のカラムはシーダーファイルから値を指定するので空文字にしておく

ScheduleFactory.php
$factory->define(App\Models\Schedule::class, function (Faker $faker) {
    return [
        'title' => $faker->words,
         // seederファイルから上書きするので空にしておく
        'schedule_day' => '',
    ];
});



modify('+1day')でタイムスタンプを変更しつつ、その日付をfor文で一件ずつ挿入していく

ScheduleSeeder.php
class ScheduleSeeder extends Seeder
{
    public function run()
    {
        $scheduled_date = new DateTime();
        for ($i = 0; $i < 5; $i++)
        {
            factory(App\Models\Schedule::class, 1)
            // createに配列でカラム名、値をセットするとfactoryファイルの内容を上書きできる
            ->create([
                'schedule_day' => $scheduled_date->modify('+1day')->format('Y-m-d')
            ]);
        }
    }
}



この辺、あまり参考記事がないので難しい、、

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0