ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • laravel 10 모델 팩토리 사용해 test data 삽입하는 방법
    백엔드/laravel 2024. 1. 13. 17:15

    1. 모델 팩토리 생성하기

       1-1. 모델 생성하기:
          Laravel에서 모델은 데이터베이스 테이블과 상호작용하는데 사용됩니다. 
          php artisan make:model Post 명령을 사용하여 "Post" 모델을 생성합니다.
          이 명령은 app\Models\Post.php 파일을 만들어줍니다.

       1-2. 팩토리 생성하기:
          팩토리를 생성하기 위해 php artisan make:factory PostFactory 명령을 사용합니다.
          이 명령은 database/factories 디렉토리에 PostFactory.php 파일을 만들어줍니다.

       1-3. 모델과 팩토리 연결하기:
          생성된 팩토리 파일 내에서 Post 모델과 연결합니다. 
          PostFactory 파일에서 define 메서드를 사용하여 모델의 각 속성에 대한 테스트 데이터를 정의합니다.

          database\factories\PostFactory.php
          ---------------------------------------

            namespace Database\Factories;

            use Illuminate\Support\Str;
            use Illuminate\Database\Eloquent\Factories\Factory;

            /**
            * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
            */
            class PostFactory extends Factory
            {
                /**
                * Define the model's default state.
                *
                * @return array<string, mixed>
                */
                public function definition(): array
                {
                    $title = fake()->sentence;
                    $slug = Str::slug($title,  separator: '-');

                    return [
                        'title' => $title,
                        'slug' => $slug,
                        'excerpt' => fake()->sentence,
                        'description' => fake()->sentence,
                        'is_published' => fake()->boolean,
                        'min_to_read' => fake()->randomDigit(),
                    ];
                }
            }
            ----------------------------------------------------------


    2. 모델 팩토리를 사용하는 방법


       모델 팩토리를 사용하는 시더를 만들어야 하며, 여기에는 두 가지 옵션이 있습니다.

       2-1 새로운 시더 파일 및 테스트 데이터 생성
           - 시더 파일 생성 
                시더를 생성하기 위해 php artisan make:seeder PostSeeder 명령을 실행합니다.
                이 명령은 database\seeders\PostSeeder.php 파일을 만들어줍니다.

                database\seeders\PostSeeder.php
                ---------------------------------------

                namespace Database\Seeders;

                use App\Models\Post;
                use Illuminate\Database\Seeder;
                use Illuminate\Database\Console\Seeds\WithoutModelEvents;

                class PostSeeder extends Seeder
                {
                    /**
                    * Run the database seeds.
                    */
                    public function run(): void
                    {
                        Post::Factory(count: 5)->create(); <- 5개의 테스트 데이터 생성
                    }
                }

           - 데스트 데이터 파일 생성
              php artisan db:seed --class=PostSeeder;

       2-2 데이터베이스 시더 사용
            database\seeders\DatabaseSeeder.php
            --------------------------------------------

            namespace Database\Seeders;

            // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
            use Illuminate\Database\Seeder;

            class DatabaseSeeder extends Seeder
            {
                /**
                * Seed the application's database.
                */
                public function run(): void
                {
                    Post::Factory(count: 5)->create(); <- 5개의 테스트 데이터 생성
                }
            }

            테스트 데이터 생성

            php artisan db:seed

            run() 안의 모든 것이 실행되므로 개인적으로는 새로운 시더 파일을 생성하는 것을 선호한다.

    댓글

Designed by Tistory.