Laravelで--seedオプションを使ってマイグレーション後にSeederを実行する方法!初心者でもわかる初期データ登録
生徒
「先生、Laravelでテーブルを作った後にすぐダミーデータを登録する方法ってありますか?」
先生
「ありますよ。それが--seedオプションです。マイグレーションを実行すると同時にSeederを実行できます。」
生徒
「どうやって使うんですか?」
先生
「コマンドの最後に--seedを付けるだけです。簡単にマイグレーションとデータ登録を同時に行えます。」
1. --seedオプションとは?
Laravelの--seedオプションは、マイグレーション後に自動でSeederを実行するためのオプションです。Seederとは、テーブルに初期データやダミーデータを登録する仕組みです。開発環境やテスト環境で効率よくデータを準備するために非常に便利な機能です。
例えば、新しいアプリを作るときにユーザー情報や記事情報をテーブルに登録したい場合、手作業で追加するのは大変ですが、Seederを使えばコマンド一つで自動生成できます。
2. マイグレーションとSeederの基本
まずマイグレーションとは、データベースのテーブルを作成したり、構造を変更したりする機能です。Laravelではphp artisan migrateでマイグレーションを実行します。
Seederはdatabase/seedersディレクトリに作成され、run()メソッド内にデータ登録の処理を書きます。
3. Seederを作成する方法
ターミナルで次のコマンドを実行します。
php artisan make:seeder UsersTableSeeder
php artisan make:seeder PostsTableSeeder
これでUsersTableSeederやPostsTableSeederがdatabase/seedersに作成されます。run()メソッド内でFactoryなどを使い、ダミーデータを生成します。
4. DatabaseSeederでSeederをまとめる
複数のSeederをまとめて実行する場合、DatabaseSeeder.phpを使います。call()メソッドで個別のSeederを呼び出します。
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call([
UsersTableSeeder::class,
PostsTableSeeder::class,
]);
}
}
これでDatabaseSeederを呼ぶだけで、指定したSeederが順番に実行されます。
5. migrate:freshと--seedの組み合わせ
新しい開発環境でテーブルを作り直し、すぐにSeederを実行したい場合はmigrate:freshと--seedを組み合わせます。
php artisan migrate:fresh --seed
このコマンドで、まず既存のテーブルを削除してマイグレーションを実行し、その後DatabaseSeederを使ってまとめてデータが登録されます。
6. 実行手順のイメージ
手順を簡単にまとめると次の通りです。
- Seederを作成する(
php artisan make:seeder) - DatabaseSeederで
call()を使ってまとめる php artisan migrate:fresh --seedでマイグレーションとSeederを同時実行
これで、開発用の初期データが一括で用意できます。
7. 注意点
--seedオプションは非常に便利ですが、本番環境では注意が必要です。migrate:freshを使うとデータベースが初期化されるため、実データが消えてしまいます。
開発環境やテスト環境で使うのが基本です。本番環境ではSeederを慎重に実行しましょう。