📚
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上でのデータ登録
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
Discussion