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