라라벨에서는 개발을 위해서 데이타를 입력해야 하는것이 아니라, 테스트를 위한 데이타를 자동으로 입력시켜 주는 기능이 있다.
Factory 를 데이타를 어떻게 입력할 것인가에 대한 정의이고
Seeder 는 Factory 에 정의된 내용으로 입력하는 동작을 한다.
Factory 를 사용하기 위해서는 모델에 Factory 기능을 추가해야 한다.
use Illuminate\Database\Eloquent\Factories\HasFactory;
class User extends Authenticatable
{
use HasFactory;
// ...
}
Factory 와 Seeder 생성하기
php artisan make:factory UserFactory
php artisan make:seed UserSeeder
database/factories/UserFactory.php
database/seeders/UserSeeder.php
Factory 정의하기
class UserFactory extends Factory
{
/**
* The current password being used by the factory.
*/
protected static ?string $password;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'remember_token' => Str::random(10),
];
}
/**
* Indicate that the model's email address should be unverified.
*/
public function unverified(): static
{
return $this->state(fn (array $attributes) => [
'email_verified_at' => null,
]);
}
}
Seeder 정의하기
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
User::factory(100)->create();
User::factory()->unverified()->create();
}
}
기본 DatabaseSeeder 에서 직접 UserSeeder 를 콜하는 경우.
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call(UserSeeder::class);
}
}
샘플 데이타 자동으로 생성해서 입력하는 명령어.
php artisan db:seeder // 기본으로 DatabaseSeeder.php 가 실행됨.
php artisan db:seed UserSeeder // 개별적인 Seeder 만 실행됨.
'Laravel' 카테고리의 다른 글
Laravel - 유저권한 설정하기 Role, Permission (spatie/laravel-permission) (0) | 2024.03.11 |
---|---|
Laravel - RouteServiceProvider 에 대해서 (여러개의 라우팅 파일작성하기) (0) | 2024.03.04 |
Laravel - Resource 컨트롤러에 대해서 (0) | 2024.01.31 |
Laravel - API Resource 만들기 (0) | 2024.01.31 |
Laravel - Enum 생성, 조회 및 Validation 처리하기 (사용자 권한 구분하기) (0) | 2024.01.29 |
라라벨에서는 개발을 위해서 데이타를 입력해야 하는것이 아니라, 테스트를 위한 데이타를 자동으로 입력시켜 주는 기능이 있다.
Factory 를 데이타를 어떻게 입력할 것인가에 대한 정의이고
Seeder 는 Factory 에 정의된 내용으로 입력하는 동작을 한다.
Factory 를 사용하기 위해서는 모델에 Factory 기능을 추가해야 한다.
use Illuminate\Database\Eloquent\Factories\HasFactory;
class User extends Authenticatable
{
use HasFactory;
// ...
}
Factory 와 Seeder 생성하기
php artisan make:factory UserFactory
php artisan make:seed UserSeeder
database/factories/UserFactory.php
database/seeders/UserSeeder.php
Factory 정의하기
class UserFactory extends Factory
{
/**
* The current password being used by the factory.
*/
protected static ?string $password;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'remember_token' => Str::random(10),
];
}
/**
* Indicate that the model's email address should be unverified.
*/
public function unverified(): static
{
return $this->state(fn (array $attributes) => [
'email_verified_at' => null,
]);
}
}
Seeder 정의하기
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
User::factory(100)->create();
User::factory()->unverified()->create();
}
}
기본 DatabaseSeeder 에서 직접 UserSeeder 를 콜하는 경우.
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call(UserSeeder::class);
}
}
샘플 데이타 자동으로 생성해서 입력하는 명령어.
php artisan db:seeder // 기본으로 DatabaseSeeder.php 가 실행됨.
php artisan db:seed UserSeeder // 개별적인 Seeder 만 실행됨.
'Laravel' 카테고리의 다른 글
Laravel - 유저권한 설정하기 Role, Permission (spatie/laravel-permission) (0) | 2024.03.11 |
---|---|
Laravel - RouteServiceProvider 에 대해서 (여러개의 라우팅 파일작성하기) (0) | 2024.03.04 |
Laravel - Resource 컨트롤러에 대해서 (0) | 2024.01.31 |
Laravel - API Resource 만들기 (0) | 2024.01.31 |
Laravel - Enum 생성, 조회 및 Validation 처리하기 (사용자 권한 구분하기) (0) | 2024.01.29 |