[Laravel] データベースマイグレーション シーダー編
- 2020年6月05日
- 技術情報
今回はLaravelの「シーダー」(Seeder)機能を使用して初期データの投入をおこなう方法を紹介します。
本記事は前回の「[Laravel] データベースマイグレーション」の続きとなります。
今回は前回作成した「students」テーブルに初期データの投入をおこないます。
シーダーの作成
シーダーの作成は以下のコマンドでおこないます。
php artisan make:seeder StudentsTableSeeder
上記コマンドを実行すると「database/seeds/StudentTableSeeder.php」が生成されます。
<?php
use Illuminate\Database\Seeder;
class StudentsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
以上のシーダークラスをベースにrunファンクションの中にinsertをおこないたい初期投入データを記述します。
DB::insert('INSERT INTO students(name, email, phone) VALUES("山田一郎", "ichiro@yamada.com", "0123-456-789")');
DB::insert('INSERT INTO students(name, email, phone) VALUES("山田二郎", "jiro@yamada.com", "0123-456-790")');
DB::insert('INSERT INTO students(name, email, phone) VALUES("山田三郎", "saburo@yamada.com", "0123-456-791")');
シーダーの登録
作成したシーダーを実行するには、「database/seeds/DatabaseSeeder.php」に登録をおこなう必要があります。
DatabaseSeederに下記のコードを記述して、先程作成した「StudentsTableSeeder」の追加をおこないます。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(StudentsTableSeeder::class);
}
}
シーダーの実行
シーダーの実行は以下のコマンドでおこなえます。
php artisan db:seed
コマンド実行後、以下が表示されたら、無事シード実行完了です。
Seeding: StudentsTableSeeder
Database seeding completed successfully.
データベースを確認すると、無事登録がおこなえていることが確認できました。

データベースの初期化、およびマイグレーションのロールバックと再実行、初期投入データのシードの投入をやりなおしたい場合は以下のコマンドを実行します。
php artisan migrate:refresh --seed
金曜日担当:nishida
nishida at 2020年06月05日 10:00:23