Seederの作成・実行
Laravel勉強記録
実行環境
OS:Mac PHP:8.0 Laravel:8
Seederとは?
データベースに初期データを登録するために使用 使用例としては最初から用意しておきたいマスターデータやテスト用のデータを作成するときに使用
Seederの作成
php artisan make:seeder ファイル名
Seeder created successfully.
と表示されればOK!!
作成されたSeederのファイルはdatabase/seeders配下に配置されている
初期状態としてはこのような状態
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class seederファイル名 extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // } }
runメソッドがSeederを実行したときに処理されるメソッド
Seeder上でのデータ登録
https://codelikes.com/laravel-eloquent-basic/
Seederを使用してデータ登録を行うには登録を行うテーブルのModelが必要 なので、Seederと一緒にModelの作成も行う ※Seederの実行のみであれば特にModel側に記載は必要ない
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use App\Models\Fruit; class FruitSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Fruit::create([ 'name' => 'リンゴ', 'color' => '赤', 'price' => '100', ]); Fruit::create([ 'name' => 'ぶどう', 'color' => '紫', 'price' => '300', ]); Fruit::create([ 'name' => 'みかん', 'color' => '黄', 'price' => '110', ]); } }
追加したいテーブルのModelをuseを行う
DatabaseSeederを編集
作成したSeederファイルは、database/seeders/DatabaseSeeder.phpから呼び出すようにして使用する
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { // 単一で実行する場合 $this->call(FruitSeeder::class); // 複数指定で実行すル場合 $this->call([ FruitSeeder::class, FruitSeeder::class, ]); } }
Seederを実行
php artisan db:seed
以下が表示されればOK
Seeding: Database\Seeders\FruitSeeder Seeded: Database\Seeders\FruitSeeder (33.59ms) Database seeding completed successfully.
Seederを指定して実行
php artisan db:seedでDatabaseSeeder.phpに書いたSeederを実行するが、 DatabaseSeeder.phpに書かなくても、Seederを指定して実行することも可能
php artisan db:seed --class FruitSeeder