목차
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
'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 |