migrateするときにデータベースシーダー実行時にsqlを直接実行させる方法

初期化ファイルをSeederで記述するのはデータが多くて面倒な場合は、ダンプファイルなど記述したSQLファイルを作って直接SQLを実行してやればいい。

方法

  • databaseディレクトリの配下にsqlというディレクトリを作成

  • initial.sqlというファイルを作成

  • initial.sqlにSQL文を記述するかコピペする

  • database/seeder/DatabaseSeeder.phpに下記のように追記

class DatabaseSeeder extends Seeder
{
    public function run()
    {
      $path = 'database/sql/initial.sql';
      \DB::unprepared(file_get_contents($path));
    }
}

これで設定は完了です。

DBの初期化とシーダーの実行

オプションで--seedをつけることで、DBの初期化とシーダーの実行も一緒にやってくれます。

php artisan migrate:fresh --seed

Category