プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【Laravel5.6】DBに初期データを入れられるシーディングについて

  • 2018年5月30日
  • 2018年8月11日
  • PHP
  • 125view
  • 0件
PHP

LaravelでMigrationを使ったDBのバージョン管理をするなら合わせて覚えておきたいのがシーディングについて。
シーディングを使えば、別端末に環境を作る場合などでDBの構築と一緒にテストデータも設定することができる。

シーダーを生成する

// Artisanコマンドでシーダーを生成
php artisan make:seeder ShopsTableSeeder

シーダーの名前は好きに決めることができるが、Laravelの書き方に合わせると
(テーブル名)TableSeeder
といった表記になる。

上記コマンドを実行することで、プロジェクトのルートからdatabase\seedsに新しくファイルが作られる。

インサート文を書いてみる

前項で作ったShopsTableSeederのrun()メソッドにインサート文を追加してみる

    public function run()
    {
        DB::table('shops')->insert([
            [
                'code' => '001',
                'email' => 'aaa@aaa.com',
                'password' => bcrypt('test')    
            ],
            [
                'code' => '002',
                'email' => 'bbb@bbb.com',
                'password' => bcrypt('test')    
            ],
            [
                'code' => '003',
                'email' => 'ccc@ccc.com',
                'password' => bcrypt('test')    
            ],
        ]);
    }

シーダーを呼び出すための設定を追記

seedsディレクトリのDatabaseSeeder.phpに追記

public function run()
{
    $this->call([
        ShopsTableSeeder::class
    ]);
}

シーディングを実行する

php artisan db:seed

上記のコマンドで、指定したテーブルにデータがインサートされるのが確認できる。

便利な使い方として、migrarionでテーブルを再構築するときのrefreshコマンドに、引数でseedと付けることで、デーブルの再構築+シーディングの実行を1つのコマンドで行うことができるので便利

php artisan migrate:refresh --seed