人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel の データベースシーダー実行時に sql文 のダンプファイルを実行する

● Laravel の データベースシーダー実行時に sql文 のダンプファイルを実行する

Laravel シーダー実行時に、sql文(mysqlumpなどのダンプファイル)を実行したい。
という要件は結構あったりします。
Laravelならとても簡単にできます。

通常のデータベースシーダー ( database/seeds/MyTableSeeder.php )

<?php
use Illuminate\Database\Seeder;
class LangdicTableSeeder extends Seeder {
    public function run()
    {
        DB::table("mytable")->insert([
			'id'      => 1 ,
			'name'    => "ichitaro suzuki" ,
        ]);
    }
}

↓ このように書き換えます

SQL文を実行するデータベースシーダー ( database/seeds/MyTableSeeder.php )

<?php
use Illuminate\Database\Seeder;
class LangdicTableSeeder extends Seeder {
    public function run()
    {
        $path = 'database/sql/mytable_2019-05-20.sql';
        DB::unprepared(file_get_contents($path));
    }
}

sqlファイルをここにおきます。 database/sql/mytable_2019-05-20.sql'

シーダーを実行します

php artisan migrate:fresh --seed

以上です。簡単ですね。

No.1518
05/24 14:36

edit