LaravelでMigrationを使ったDBのバージョン管理をするなら合わせて覚えておきたいのがシーディングについて。
シーディングを使えば、別端末に環境を作る場合などでDBの構築と一緒にテストデータも設定することができる。
シーダーを生成する
[php] // Artisanコマンドでシーダーを生成php artisan make:seeder ShopsTableSeeder
[/php]
シーダーの名前は好きに決めることができるが、Laravelの書き方に合わせると
(テーブル名)TableSeeder
といった表記になる。
上記コマンドを実行することで、プロジェクトのルートからdatabase\seedsに新しくファイルが作られる。
インサート文を書いてみる
前項で作ったShopsTableSeederのrun()メソッドにインサート文を追加してみる
[php]
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’)
],
]);
}
[/php]
シーダーを呼び出すための設定を追記
seedsディレクトリのDatabaseSeeder.phpに追記
[php]
public function run()
{
$this->call([
ShopsTableSeeder::class
]);
}
[/php]
シーディングを実行する
[shell] php artisan db:seed[/shell] 上記のコマンドで、指定したテーブルにデータがインサートされるのが確認できる。
便利な使い方として、migrarionでテーブルを再構築するときのrefreshコマンドに、引数でseedと付けることで、デーブルの再構築+シーディングの実行を1つのコマンドで行うことができるので便利
[shell]
php artisan migrate:refresh –seed
[/shell]