목차


 seeders

seeders : 데이터베이스에 초기 데이터를 채우기 위한 클래스

주로 개발 또는 테스트 환경에서 데이터베이스 테스트 데이터를 채우는 데 사용함

database/seeders 폴더에 시더 파일을 정의

시더 파일은 DatabaseSeeder 클래스의 run 메서드를 사용하여 데이터베이스에 데이터를 삽입함

ex) categories 테이블에 초기 데이터를 추가하기 위해 시더를 작성할 수 있음

 

사용법 :

1. 시더 클래스 생성(database\seeders에 생성) : php artisan make:seeder CategorySeeder

2. database\seeders\DatabaseSeeder->run() 안에 1에서 생성한 시더 클래스를 콜에 추가

// database\seeders\DatabaseSeeder.php

public function run()
{
    // 초기 데이터 삽입용 시더 호출
    $this->call(CategorySeeder::class);
}

 

3. 1에서 생성한 시더 클래스에 레코드 추가 코드를 작성

// database/seeders/CategorySeeder.php

public function run()
{
    DB::table('categories')->insert([
        ['no' => '0', 'name' => '카테고리0']
        ,['no' => '1', 'name' => '카테고리1']
        ,['no' => '2', 'name' => '카테고리2']
        ,['no' => '3', 'name' => '카테고리3']
        ,['no' => '4', 'name' => '카테고리4']
        ,['no' => '5', 'name' => '카테고리5']
        ,['no' => '6', 'name' => '카테고리6']
        ,['no' => '7', 'name' => '카테고리7']
        ,['no' => '8', 'name' => '카테고리8']
        ,['no' => '9', 'name' => '카테고리9']
    ]);
}

 

 

4-1. 개별 시더 실행 : php artisan db:seed --class=CategorySeeder (seeder의 class명)
4-2. database\seeders\DatabaseSeeder->run()에 설정된 모든 시더 및 팩토리 실행 : php artisan db:seed


 

 factories

Factories : 테스트 데이터를 생성하기 위한 블루프린트

(블루 프린트 : 데이터베이스 스키마를 정의하기 위한 객체지향적인 방식을 제공하는 도구 또는 패턴

데이터베이스의 테이블 구조와 관련된 작업을 프로그래밍적으로 수행할 수 있도록 도와줌

주로 마이그레이션 작업에서 사용되며, Laravel과 같은 프레임워크에서 일반적으로 지원)

 

이를 사용하여 모델 인스턴스를 생성하고, 각 필드에 적절한 가짜 데이터를 할당할 수 있음

database/factories 폴더에 팩토리 파일을 정의함

팩토리 파일은 ModelFactory 클래스의 메서드를 사용하여 팩토리를 정의함

ex) Boards 모델의 팩토리를 생성하는 경우 BoardsFactory 클래스를 생성하고 define 메서드를 사용하여 팩토리를 정의

 

사용법 :

1. 팩토리 클래스 생성(database\factories에 생성) : php artisan make:factory BoardFactory --model=Board

2. database\seeders\DatabaseSeeder->run() 안에 1에서 생성한 팩토리 클래스를 콜에 추가

// database\seeders\DatabaseSeeder.php

public function run()
{
    // 더미 데이터 삽입용 팩토리 호출
    // factory()안의 숫자는 생성할 데이터 갯수
    \App\Models\Board::factory(20000)->create();
}

 

3. 1에서 생성한 팩토리 클래스에 레코드 추가 코드를 작성

// database/factories/BoardFactory.php

public function definition()
{
    $date = $this->faker->dateTimeBetween('-1 years');
    return [
        'category' => $this->faker->randomNumber(1) // randomNumber(자리수)
        ,'btitle' => $this->faker->realText(100) // realText(글자수)
        ,'bcontent' => $this->faker->realText(2000)
        ,'created_at' => $date
        ,'updated_at' => $date
    ];
}

 

4. database\seeders\DatabaseSeeder->run()에 설정된 모든 시더 및 팩토리 실행 : php artisan db:seed


Github

Link

 

'Laravel > Laravel_ex' 카테고리의 다른 글

migrations(database/migrations)  (0) 2023.05.27
블레이드 템플릿(resources/views)  (0) 2023.05.24
라우트 정의(routes/web.php)  (0) 2023.05.23
Laravel  (0) 2023.05.23

+ Recent posts