Seeder内にFakerとループを使ってテストデータの生成処理を書く代わりに、テストデータを作成するモデルファクトリを定義し、Seederからモデルファクトリを利用することでSeedingを行う方法もある。
1. database/factories/ModelFactory.phpにファクトリを定義する
1 2 3 4 5 6 7 8 |
$factory->define(App\User::class, function (Faker\Generator $faker) { return [ 'name' => $faker->name, 'email' => $faker->email, 'password' => bcrypt(str_random(10)), 'remember_token' => str_random(10), ]; }); |
Testing – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.2/testing#model-factories
2. Seeder内でモデルファクトリを使う
1 2 3 4 5 6 |
public function run() { factory(App\User::class, 50)->create()->each(function($u) { $u->posts()->save(factory(App\Post::class)->make()); }); } |
Database: Seeding – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.2/seeding#using-model-factories