데이터베이스 테이블에 데이터를 심는 행위를 시딩(seeding)이라 한다.
시더만들기
php artisan make:seeder UsersTableSeeder
시더 작성하기
datablses/seeders/UserTableSeeder.php
public function run()
{
App\User::create([
'name' => sprintf('%s %s', str_random(3), str_random(4)),
'email' => str_random(10). 'example.com',
'password' => bcrypt('password'),
]);
}
시더 실행하기
php artisan db:seed --class=UsersTableSeeder
데이터가 심어졌다.
시더 작성 수정하기(모델 팩토리)
datablses/seeders/UserTableSeeder.php
public function run()
{
factory(App\User::class, 50)->create();
}
php artisan db:seed --class=UsersTableSeeder
or
php artisan db:seed
users 테이블에 50개의 데이터가 심어졌다.
1부 완료
아래는 마이그레이션과 시딩작업을 같이 하는 내용
모델 팩토리 추가
dababase/factories/ModelFactory.php
$factory->define(App\User::class, function (Faker\Generator $faker) {
//static $password;
return [
'name' => $faker->name,
'email' => $faker->safeEmail,
'password' => bcrypt('password'),
//'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
$factory->define(App\Article::class, function (Faker\Generator $faker) {
$date = $faker->dateTimeThisMonth;
return [
'title' => $faker->sentence(),
'content' =>$faker->paragraph(),
'created_at' => $date,
'updated_at' => $date,
];
});
articles 테이블 시더 뼈대 코드 만들기
php artisan make:seeder ArticlesTableSeeder
소스작성
public function run()
{
$users = App\User::all();
$users->each(function ($user){
$user->articles()->save(
factory(App\Article::class)->make()
);
});
}
마스터 시더 수정
database/seeds/DatebaseSeeder.php
public function run()
{
if(config('database.default') !== 'sqlite'){
DB::statement('SET FOREIGN_KEY_CHECKS=0');
}
//Model::unguard();
App\User::truncate();
$this->call(UsersTableSeeder::class);
App\Article::truncate();
$this->call(ArticlesTableSeeder::class);
//Model::reguard();
if(config('database.default') !== 'sqlite'){
DB::statement('SET FOREIGN_KEY_CHECKS=1');
}
마스터 시더는 외래키 설정으로 인해 순서대로 시딩해줘야 한다. 그래야 오류가 없다.
데이터 베이스 시딩
php artisan db:seed
마이그레이션과 시딩
마이그레이션과 시딩을 한꺼번에 해준다.
php artisan migrate:refresh --seed
'라라벨 > 시더' 카테고리의 다른 글
가짜데이터 맨뒤 점 없애기 (0) | 2020.03.30 |
---|---|
가짜 유저 추가 (0) | 2020.03.30 |
마스터시더 (0) | 2019.05.27 |
간단하게 데이터를 삽입하는 시더만들기 (0) | 2019.05.25 |