make:seeder — シーダーの生成コマンド

artisan

make:seeder

  • カテゴリ: artisan
  • 掲載バージョン: Laravel 12・PHP 8.4
  • 名前空間 / FQCN / コマンド: php artisan make:seeder
  • 関連: make:model, make:factory, make:migration, php artisan db:seed, php artisan migrate
  • 変更履歴: Laravel 12 では --force オプションが追加され、既存Seederを上書きできるようになった。

要点(TL;DR)

  • 何に使うか:データベースシーダークラスを生成する。
  • 最低限の使い方php artisan make:seeder UserSeeder
  • よくある罠
  • 既存ファイルを上書きしたいときに --force を付け忘れる。
  • 名前にプレフィックスを付けずに make:seeder するとクラス名が Seeder.php になる。
  • マイグレーションと同時にシーダーを実行したい場合は php artisan migrate --seed を忘れないこと。

概要

make:seederdatabase/seeders ディレクトリにシーダークラスを生成する Artisan コマンドです。
生成されたクラスは run() メソッドでデータを挿入でき、php artisan db:seed で呼び出します。
実務では Factory と組み合わせて大量データの作成やテストデータの生成に使われます。

構文 / シグネチャ

php artisan make:seeder {name} [--force]
引数 必須 既定値 説明
name string なし シーダークラス名(例: UserSeeder)
–force bool × false 既存ファイルを上書きする

戻り値void(標準出力に生成結果を表示)。

例外/副作用

  • ファイル作成時にディレクトリが無い場合は自動生成。
  • 既存ファイルを上書きするときは --force が必要。

使用例

最小例

php artisan make:seeder UserSeeder

生成されるファイル (database/seeders/UserSeeder.php):

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\User;

class UserSeeder extends Seeder
{
    public function run()
    {
        // デフォルトでは何もしない
    }
}

実務例

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\User;

class UserSeeder extends Seeder
{
    public function run()
    {
        // 50件のユーザーをファクトリで作成
        User::factory()->count(50)->create();
    }
}

シーダーを実行するには:

php artisan db:seed --class=UserSeeder

またはマイグレーションと同時に:

php artisan migrate --seed

よくある落とし穴・注意

  • 名前空間make:seeder Admin/UserSeeder を実行すると Database\Seeders\Admin\UserSeeder が作成されるので、ファイルパスと名前空間が一致しているか確認。
  • 上書き:既存シーダーを生成し直すときは --force を忘れない。
  • 自動読み込みdatabase/seeders は Composer の PSR‑4 自動ロード対象外のため、composer dump-autoload を実行する必要はない。
  • 実行順序:複数シーダーを呼び出す場合は DatabaseSeedercall() メソッドに追加するか、--class= を使って個別に指定。

テスト例(Pest)

<?php

it('creates a seeder file', function () {
    $name = 'TestSeeder';
    $path = database_path('seeders/' . $name . '.php');

    // 既存があれば削除
    @unlink($path);

    // コマンド実行
    $this->artisan('make:seeder', ['name' => $name]);

    expect(file_exists($path))->toBeTrue();
});

トラブルシューティング

エラー 原因 対策
Cannot create file: Permission denied database/seeders への書き込み権限が無い chmod -R 775 database/seeders で権限を付与。
Class UserSeeder not found PSR‑4 の自動ロードが反映されていない composer dump-autoload でオートローダーを再生成。

参考リンク


レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする