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

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

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

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]