-
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() 안의 모든 것이 실행되므로 개인적으로는 새로운 시더 파일을 생성하는 것을 선호한다.'백엔드 > laravel' 카테고리의 다른 글
query builder에서 select (0) 2024.01.14 seeder 로 data 를 삽입하는 방법 (2) 2024.01.13 php artisan db:show 버전 오류 (0) 2024.01.12 라라벨(laravel) 설치 후 storage를 public에 연결하기 (0) 2023.12.24 라라벨 뷰 캐시 지우기 (0) 2023.07.12