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の実行内容が出力されますよ。