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