Laravel の migrationからSeederを直接実行する

Migrationを作って新規テーブルを追加した時に、初期データを投入したい事があると思う。 通常はSeederを個別に実行するのだと思うけど面倒ですよね。

そこで migrationから直接Seederを呼び出す方法です。 Artisanコマンドってこうやって使えるんですな。

Migrationファイル

use Illuminate\Support\Facades\Artisan;

(省略)

public function up()
{
    (省略)

    Artisan::call('db:seed', [
        '--class' => UserTypeTableSeeder::class,
        '--force' => true,
    ]);
}

この例ではUserTypeTableSeederを実行してます。

ちなみにドライランで実行されるSQLを確認できるオプション「–pretend」でもちゃんとSeederの実行内容が出力されますよ。