modelFactory
๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ ์ํ ๋๊ตฌ
๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ
factory(App\Models\User::class)->make();
factory(App\Models\User::class,5)->make();
factory(App\Models\User::class)->make(['name'=>'foo']);
์๋ ์ด์ฉ
make()๋ฉ์๋๋ ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ธฐ๋ง ํ ๋ฟ ์ค์ db์ ์ ์ฅ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ seeder์์ create()๋ฉ์๋๋ฅผ ์ด์ฉํด์ db์ ์ ์ฅํด์ค ์ ์๋ค.
class UsersTableSeeder extends Seeder
{
public function run()
{
factory(App\User::class, 5)->create();
}
}
๋ชจ๋ธํฉํ ๋ฆฌ ์์ฑ
class ModelFactory extends Factory
{
protected $model = Article::class;
public function definition()
{
$date = $faker->dateTimeThisMonth;
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password,
'month'=> $date,
'remember_token' => Str::random(10),
];
}
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
}
definition()๋ฉ์๋๋ฅผ ์ด์ฉํด์ factory()๋ฉ์๋์ ๋ด์ฉ์ ์ ์ํด์ฃผ๋ฉด๋๋ค.
depth ๊ด๊ณ Seeder์ถ๊ฐํด๋ณด๊ธฐ
class UsersTableSeeder extends Seeder
{
public function run()
{
$users = App\Users::all();
$users->each(function ($user) {
$user->articles()->save(
factory(App\Article::class)->make()
);
});
}
}
์๋กํํธ ์ปฌ๋ ์ ์์ ์ธ ์ ์๋ each๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ปฌ๋ ์ ์ ์ํํ ์ ์๊ณ , foreach()๋ ๊ฐ๋ฅํ๋ค.
์ด๋ ๋จ์ํ make()๋ก๋ db์ ์ ์ฅ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ฅ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ create()๊ฐ ์๋๋ผ save()๋ฅผ ์ฌ์ฉํ๋ค. save()๋ create()์ ์ญํ ์ ๊ฐ์ง๋ง ๋ฐ์ ์ ์๋ ํ์ ์ด save()๋ ๊ฐ์ฒด, create()๋ ๋ฐฐ์ด์ด๋ผ๋ ์ ์ด ๋ค๋ฅด๋ค.
Last updated