カテゴリ: Laravel 更新日: 2025/11/23

Laravelで--seedオプションを使ってマイグレーション後にSeederを実行する方法!初心者でもわかる初期データ登録

Laravelの`--seed`オプションでマイグレーション後にSeederを実行する方法
Laravelの`--seed`オプションでマイグレーション後にSeederを実行する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Laravelでテーブルを作った後にすぐダミーデータを登録する方法ってありますか?」

先生

「ありますよ。それが--seedオプションです。マイグレーションを実行すると同時にSeederを実行できます。」

生徒

「どうやって使うんですか?」

先生

「コマンドの最後に--seedを付けるだけです。簡単にマイグレーションとデータ登録を同時に行えます。」

1. --seedオプションとは?

1. --seedオプションとは?
1. --seedオプションとは?

Laravelの--seedオプションは、マイグレーション後に自動でSeederを実行するためのオプションです。Seederとは、テーブルに初期データやダミーデータを登録する仕組みです。開発環境やテスト環境で効率よくデータを準備するために非常に便利な機能です。

例えば、新しいアプリを作るときにユーザー情報や記事情報をテーブルに登録したい場合、手作業で追加するのは大変ですが、Seederを使えばコマンド一つで自動生成できます。

2. マイグレーションとSeederの基本

2. マイグレーションとSeederの基本
2. マイグレーションとSeederの基本

まずマイグレーションとは、データベースのテーブルを作成したり、構造を変更したりする機能です。Laravelではphp artisan migrateでマイグレーションを実行します。

Seederはdatabase/seedersディレクトリに作成され、run()メソッド内にデータ登録の処理を書きます。

3. Seederを作成する方法

3. Seederを作成する方法
3. Seederを作成する方法

ターミナルで次のコマンドを実行します。


php artisan make:seeder UsersTableSeeder
php artisan make:seeder PostsTableSeeder

これでUsersTableSeederPostsTableSeederdatabase/seedersに作成されます。run()メソッド内でFactoryなどを使い、ダミーデータを生成します。

4. DatabaseSeederでSeederをまとめる

4. DatabaseSeederでSeederをまとめる
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の組み合わせ

5. migrate:freshと--seedの組み合わせ
5. migrate:freshと--seedの組み合わせ

新しい開発環境でテーブルを作り直し、すぐにSeederを実行したい場合はmigrate:fresh--seedを組み合わせます。


php artisan migrate:fresh --seed

このコマンドで、まず既存のテーブルを削除してマイグレーションを実行し、その後DatabaseSeederを使ってまとめてデータが登録されます。

6. 実行手順のイメージ

6. 実行手順のイメージ
6. 実行手順のイメージ

手順を簡単にまとめると次の通りです。

  1. Seederを作成する(php artisan make:seeder
  2. DatabaseSeederでcall()を使ってまとめる
  3. php artisan migrate:fresh --seedでマイグレーションとSeederを同時実行

これで、開発用の初期データが一括で用意できます。

7. 注意点

7. 注意点
7. 注意点

--seedオプションは非常に便利ですが、本番環境では注意が必要です。migrate:freshを使うとデータベースが初期化されるため、実データが消えてしまいます。

開発環境やテスト環境で使うのが基本です。本番環境ではSeederを慎重に実行しましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)