수색…
비고
데이터베이스 시드는 데이터, 일반 테스트 데이터를 데이터베이스에 삽입 할 수있게합니다. 기본적으로 database/seeds
아래에 DatabaseSeeder
클래스가 database/seeds
.
시더를 돌리는 것은 다음과 같이 할 수 있습니다.
php artisan db:seed
또는 단일 클래스 만 처리하려는 경우
php artisan db:seed --class=TestSeederClass
모든 장인 명령과 마찬가지로 API 문서 에서 찾을 수있는 다양한 방법에 액세스 할 수 있습니다
데이터 삽입
데이터를 삽입하는 방법에는 여러 가지가 있습니다.
DB 외관 사용
public function run()
{
DB::table('users')
->insert([
'name' => 'Taylor',
'age' => 21
]);
}
모델 인스턴스화를 통해
public function run()
{
$user = new User;
$user->name = 'Taylor';
$user->save();
}
create 메소드 사용
public function run()
{
User::create([
'name' => 'Taylor',
'age' => 21
]);
}
공장 사용
public function run()
{
factory(App\User::class, 10)->create();
}
이전 데이터 시드 및 삭제 및 자동 증가 자동 재설정
public function run()
{
DB::table('users')->delete();
DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;');
factory(App\User::class, 200)->create();
}
데이터 삽입 / 업데이트에 대한 자세한 내용은 지속성 예제를 참조하십시오.
다른 시더에게 전화하기
DatabaseSeeder
클래스 내에서 다른 시드를 호출 할 수 있습니다
$this->call(TestSeeder::class)
이를 통해 씨에이터를 쉽게 찾을 수있는 곳에 하나의 파일을 보관할 수 있습니다. 외래 키 제약 조건에 대한 호출 순서에주의해야합니다. 아직 존재하지 않는 테이블은 참조 할 수 없습니다.
파종기 만들기
시더를 생성하려면 make:seeder
Artisan 명령을 사용할 수 있습니다. 생성 된 모든 database/seeds
디렉토리에 배치됩니다.
$ php artisan make:seeder MoviesTableSeeder
생성 된 시드는 하나의 메소드를 포함 run
. 이 방법으로 데이터베이스에 데이터를 삽입 할 수 있습니다.
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class MoviesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
App\Movie::create([
'name' => 'A New Hope',
'year' => '1977'
]);
App\Movie::create([
'name' => 'The Empire Strikes Back',
'year' => '1980'
]);
}
}
일반적으로 DatabaseSeeder
클래스 내부의 모든 시드러를 호출하려고합니다.
db:seed
작성하고 나면 db:seed
명령을 사용하십시오. 그러면 DatabaseSeeder
의 run
기능이 run
됩니다.
$ php artisan db:seed
--class
옵션을 사용하여 개별적으로 실행되도록 특정 --class
클래스를 실행하도록 지정할 수도 있습니다.
$ php artisan db:seed --class=UserSeeder
모든 마이그레이션을 롤백하고 다시 실행 한 다음 다시 시드하려는 경우 :
$ php artisan migrate:refresh --seed
migrate:refresh --seed
명령은 다음 세 명령에 대한 바로 가기입니다.$ php artisan migrate:reset # rollback all migrations $ php artisan migrate # run migrations $ php artisan db:seed # run seeders
안전한 재 시드
이전에 만든 시드에 영향을주지 않고 데이터베이스를 다시 시드 할 수 있습니다. 이를 위해 firstOrCreate
에서 firstOrCreate
를 사용할 수 있습니다.
EmployeeType::firstOrCreate([
'type' => 'manager',
]);
그런 다음 데이터베이스를 시드 할 수 있습니다.
php artisan db:seed
나중에 다른 유형의 직원을 추가하려면 동일한 파일에 새 직원을 추가하기 만하면됩니다.
EmployeeType::firstOrCreate([
'type' => 'manager',
]);
EmployeeType::firstOrCreate([
'type' => 'secretary',
]);
그리고 문제없이 데이터베이스를 다시 시드하십시오.
php artisan db:seed
첫 번째 호출에서 레코드를 검색하지만 아무 것도하지 않음을 알 수 있습니다.