DB에 테스트용 데이타를 랜덤하게 자동으로 입력할 수 있는 방법을 제공해 준다.
우선 모델에 Factory 를 추가해 줘야 한다.
use Illuminate\Database\Eloquent\Factories\HasFactory;
class User extends Authenticatable
{
use HasFactory;
// ...
}
기본 명령어
php artisan make:seeder UserSeeder
php artisan make:factory UserFactory
// 실행하기
php artisan db:seed UserSeeder
기본 Seed 이용하기
이미 생성된 파일이 있다.
database/seeders/DatabaseSeeder.php
다음 내용을 추가한다.
# DatabaseSeeder.php
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Support\Str;
use Illuminate\Support\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
// 아래 내용 추가
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
명령어 실행
php artisan db:seed
users 테이블에 하나의 데이타가 자동으로 입력된다.
Seed 생성하기
그럼, 각각의 테이블에 데이타를 입력하는 방법을 알아보자.
우선 하나의 데이타를 입력하기 위한 씨드를 만들어야 한다.
생성하기
php artisan make:seeder UserSeeder
다음 위치에 파일이 자동으로 생성된다.
database/seeders/UserSeeder.php
위에서 추가한 내용을 UserSeeder.php 파일에 잘라내서 붙여넣기 한다.
# UserSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Support\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
class UserSeeder extends Seeder
{
public function run(): void
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
명령어 실행
php artisan db:seed UserSeeder
여기까지는 각각의 DB Table 에 데이타를 하나씩 넣는 방법이다.
Seed 대량으로 입력하기
php artisan make:factory UserFactory
이미 생성되어 있을것이다.
# UserFactory.php
public function definition()
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
기존 내용을 삭제하고 다음 내용을 추가한다.
# UserSeeder.php
use App\Models\User;
class UserSeeder extends Seeder
{
public function run(): void
{
User::factory()->count(100)->create();
}
}
명령어 실행
php artisan db:seed UserSeeder
100명의 User 가 생성되었다.
활용 가능한 fake() 함수
'title' => fake()->sentence,
'content' => fake()->paragraph,
'name' => fake()->userName,
'email' => fake()->email(),
'email' => fake()->unique()->safeEmail(),
'price' => fake()->randomNumber(2),
'author' => fake()->name,
'editor' => fake()->company,
'create_at' => now(),
한글로 입력해 보기
config/app.php 파일에 다음 내용을 수정한다.
# config/app.php
'faker_locale' => 'ko_KR',
'content' => $this->faker->realText(),
'name' => $this->faker->name(),
'email' => $this->faker->email(),
한글 관련 아래 내용 참조
https://github.com/fzaninotto/Faker/tree/master/src/Faker/Provider/ko_KR
https://github.com/FakerPHP/Faker
GitHub - FakerPHP/Faker: Faker is a PHP library that generates fake data for you
Faker is a PHP library that generates fake data for you - GitHub - FakerPHP/Faker: Faker is a PHP library that generates fake data for you
github.com
'Laravel' 카테고리의 다른 글
Laravel - Jetstream Teams 설치하기 (0) | 2023.11.19 |
---|---|
Laravel - global 로 laravel 프로젝트 생성 명령어 설정하기 (0) | 2023.11.19 |
Laravel - Splade (Single Page Application) (0) | 2023.10.21 |
Laravel - 라우트(Route) 핵심정리 (0) | 2023.10.21 |
Laravel - 데이타 입력, 수정, 삭제 익히기 / Bootcamp Chirper with Blade (0) | 2023.10.20 |
DB에 테스트용 데이타를 랜덤하게 자동으로 입력할 수 있는 방법을 제공해 준다.
우선 모델에 Factory 를 추가해 줘야 한다.
use Illuminate\Database\Eloquent\Factories\HasFactory;
class User extends Authenticatable
{
use HasFactory;
// ...
}
기본 명령어
php artisan make:seeder UserSeeder
php artisan make:factory UserFactory
// 실행하기
php artisan db:seed UserSeeder
기본 Seed 이용하기
이미 생성된 파일이 있다.
database/seeders/DatabaseSeeder.php
다음 내용을 추가한다.
# DatabaseSeeder.php
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Support\Str;
use Illuminate\Support\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
// 아래 내용 추가
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
명령어 실행
php artisan db:seed
users 테이블에 하나의 데이타가 자동으로 입력된다.
Seed 생성하기
그럼, 각각의 테이블에 데이타를 입력하는 방법을 알아보자.
우선 하나의 데이타를 입력하기 위한 씨드를 만들어야 한다.
생성하기
php artisan make:seeder UserSeeder
다음 위치에 파일이 자동으로 생성된다.
database/seeders/UserSeeder.php
위에서 추가한 내용을 UserSeeder.php 파일에 잘라내서 붙여넣기 한다.
# UserSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Support\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
class UserSeeder extends Seeder
{
public function run(): void
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => Hash::make('password'),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
명령어 실행
php artisan db:seed UserSeeder
여기까지는 각각의 DB Table 에 데이타를 하나씩 넣는 방법이다.
Seed 대량으로 입력하기
php artisan make:factory UserFactory
이미 생성되어 있을것이다.
# UserFactory.php
public function definition()
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
기존 내용을 삭제하고 다음 내용을 추가한다.
# UserSeeder.php
use App\Models\User;
class UserSeeder extends Seeder
{
public function run(): void
{
User::factory()->count(100)->create();
}
}
명령어 실행
php artisan db:seed UserSeeder
100명의 User 가 생성되었다.
활용 가능한 fake() 함수
'title' => fake()->sentence,
'content' => fake()->paragraph,
'name' => fake()->userName,
'email' => fake()->email(),
'email' => fake()->unique()->safeEmail(),
'price' => fake()->randomNumber(2),
'author' => fake()->name,
'editor' => fake()->company,
'create_at' => now(),
한글로 입력해 보기
config/app.php 파일에 다음 내용을 수정한다.
# config/app.php
'faker_locale' => 'ko_KR',
'content' => $this->faker->realText(),
'name' => $this->faker->name(),
'email' => $this->faker->email(),
한글 관련 아래 내용 참조
https://github.com/fzaninotto/Faker/tree/master/src/Faker/Provider/ko_KR
https://github.com/FakerPHP/Faker
GitHub - FakerPHP/Faker: Faker is a PHP library that generates fake data for you
Faker is a PHP library that generates fake data for you - GitHub - FakerPHP/Faker: Faker is a PHP library that generates fake data for you
github.com
'Laravel' 카테고리의 다른 글
Laravel - Jetstream Teams 설치하기 (0) | 2023.11.19 |
---|---|
Laravel - global 로 laravel 프로젝트 생성 명령어 설정하기 (0) | 2023.11.19 |
Laravel - Splade (Single Page Application) (0) | 2023.10.21 |
Laravel - 라우트(Route) 핵심정리 (0) | 2023.10.21 |
Laravel - 데이타 입력, 수정, 삭제 익히기 / Bootcamp Chirper with Blade (0) | 2023.10.20 |