02_10_Laravel Seeder & Factoryの使い方 - hpscript/laravel GitHub Wiki
DatabaseSeeder
./database/seeds/DatabaseSeeder.php
public function run()
{
$this->call(UsersTableSeeder::class);
}
make:seeder
$ php artisan make:seeder UsersTableSeeder ./database/seeds/UsersTableSeeder.php
public function run()
{
//
DB::table('users')->insert([
'name'=>str_random(10),
'role_id'=>1,
'is_active'=>1,
'email'=>str_random(10).'@gmail.com',
'password'=>bcrypt('secret')
]);
}
$ php artisan db:seed
select * from users;
factory
./database/factories/ModelFactory.php
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->safeEmail,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
./database/seeds/DatabaseSeeder.php
public function run()
{
// $this->call(UsersTableSeeder::class);
factory(App\User::class, 10)->create();
}
public function run()
{
// $this->call(UsersTableSeeder::class);
factory(App\User::class, 10)->create()->each(function($user){
$user->posts()->save(factory(App\Post::class)->make());
});
}
users以外でfactoryの利用
ModelFactory.php
$factory->define(App\Post::class, function (Faker\Generator $faker) {
return [
'category_id' => $faker->numberBetween(1,0),
'photo_id' => 1,
'title' => $faker->sentence(7, 11),
'body' => $faker->paragraphs(rand(10,15), true),
];
});
$ php artisan db:seed
laravel 5.5以上だと、config/app.phpで'faker_locale' => 'ja_JP',とすると、日本語化されるとのことです。