수색…


비고

데이터베이스 시드는 데이터, 일반 테스트 데이터를 데이터베이스에 삽입 할 수있게합니다. 기본적으로 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 명령을 사용하십시오. 그러면 DatabaseSeederrun 기능이 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

첫 번째 호출에서 레코드를 검색하지만 아무 것도하지 않음을 알 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow