seeding

db ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์‹ฌ๋Š” ํ–‰์œ„๋ฅผ ์‹œ๋”ฉ์ด๋ผ๊ณ  ํ•˜๊ณ  ์ด๋Š” ์„œ๋น„์Šค ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ, ๊ฐœ๋ฐœ ์ค‘์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ, ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋นจ๊ฒŒ ์ค€๋น„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋ผ๋ผ๋ฒจ์€ ํด๋ž˜์Šค ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ ์‹œ๋”ฉ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

$ php artisan make:seeder UsersTableSeeder

์œ„ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด database/seeds ํ•˜์œ„์— ์ƒ์„ฑ์ด ๋˜๊ณ  ํด๋ž˜์Šค ์ด๋ฆ„์€ ์ž์œ ๋กญ๊ฒŒ ์ง€์œผ๋ฉด ๋œ๋‹ค. ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ run()๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์‹œ๋”ฉ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๋”ฉ ๋กœ์ง์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        App\User::create([
            'name'=> sprintf('%s %s',str_random(3), str_random(4)),
            'email' => str_random(10) . '@example.com',
            'password' => bcrypt('password'),
        ]);
    }
}

๋งˆ์Šคํ„ฐ ์‹œ๋”

๋ชจ๋ธ๋งˆ๋‹ค ์•„ํ‹ฐ์ฆŒ ์‹œ๋”ฉ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๋” ํด๋ž˜์Šค๋ฅผ ํ•œ๋ฒˆ์— ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆ์Šคํ„ฐ ์‹œ๋” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์‹œ๋”ฉ์˜ ์ˆœ์„œ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ ํ…Œ์ด๋ธ”๊ฐ„์˜ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์—†๋‹ค๋ฉด ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์กด์žฌํ•œ๋‹ค๋ฉด ์‹œ๋”ฉํ•˜๋Š” ์ˆœ์„œ๋„ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (์—†๋Š” ์ปฌ๋Ÿผ์— ์ข…์†๋œ ์ปฌ๋Ÿผ์€ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

class DatabaseSeeder extends Seeder{
    public function run(){
        if(config('database.default') !== 'sqlite'){
            DB::statement('SET FOREIGN_KEY_CHECKS=0');
        }

        //Model::unguard();

        App\User::truncate();
        $this->call(UsersTableSeeder::class);

        App\Article::truncate();
        $this->call(ArticlesTableSeeder::class);

        //Model::reguard();

        if(config('database.default') !== 'sqlite'){
            DB::statement('SET FOREIGN_KEY_CHECKS=1');
        }
    }
}

Model::unguard()์™€ Model::reguard() ๋ฉ”์„œ๋“œ๋Š” ์—˜๋กœํ€€ํŠธ ๋ชจ๋ธ์— ์ •์˜ํ•œ ๋Œ€๋Ÿ‰ ํ• ๋‹น ์ œ์•ฝ ์‚ฌํ•ญ์„ ํ’€์—ˆ๋‹ค๊ฐ€ ์ž ๊ทธ๋Š” ๋ช…๋ น์œผ๋กœ ๋ผ๋ผ๋ฒจ5.2์ด์ƒ์€ ์‹œ๋”ฉํ•  ๋•Œ ์ž๋™์œผ๋กœ ํ’€๊ณ  ์ž ๊ทผ๋‹ค.

  • config('database.default') : config/database.phpํŒŒ์ผ์—์„œ defaultํ‚ค์— ํ• ๋‹น๋œ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ๊ตฌ๋ฌธ์œผ๋กœ db์ข…๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. sqlite๋Š” ์™ธ๋ถ€ํ‚ค๋ฅผ ๊บผ๋‘๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•œ ๊ตฌ๋ฌธ

  • truncate() : ํ…Œ์ด๋ธ”์— ๋‹ด๊ธด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ๋กœ, delete()์™€ ๊ฐ™์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๊ธฐ๋ณธํ‚ค๋ฅผ 1๋กœ ์žฌ๋ฐฐ์—ดํ•œ๋‹ค.

  • call() : $class::run() ๋ฉ”์„œ๋“œ์˜ ๋ณธ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ์ฝ˜์†”์— ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

php artisan db:seed๋กœ ๋งˆ์Šคํ„ฐ ์‹œ๋“œ๋ฅผ ์‹œ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

php artisan migrate:refresh --seed : ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ์‹œ๋”ฉ์„ ํ•œ๋ฒˆ์— ์‹คํ–‰

Last updated