수색…


Seeder 달리기

새 Seeder를 DatabaseSeeder 클래스에 추가 할 수 있습니다.

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UserTableSeeder::class);
    }

데이터베이스 시더를 실행하려면 Artisan 명령을 사용하십시오.

php artisan db:seed

그러면 DatabaseSeeder 클래스가 실행됩니다. --class= 옵션을 사용하여 --class= 자를 수동으로 지정할 수도 있습니다.

* Seeder 클래스를 찾을 수없는 경우 작곡가 dumpautoload를 실행해야 할 수도 있습니다. 이것은 일반적으로 artisan 명령을 사용하는 대신 시드 클래스를 수동으로 만드는 경우에 발생합니다.

씨앗 만들기

데이터베이스 시드는 / database / seeds 디렉토리에 저장됩니다. Artisan 명령을 사용하여 시드를 만들 수 있습니다.

php artisan make:seed UserTableSeeder

또는 Illuminate\Database\Seeder 를 확장하는 새 클래스를 만들 수 있습니다. 이 클래스는 run() 이라는 공용 함수 여야합니다.

시드를 사용하여 데이터 삽입

시더에서 모델을 참조 할 수 있습니다.

use DB;
use App\Models\User;

class UserTableSeeder extends Illuminate\Database\Seeder{

    public function run(){
        # Remove all existing entrie
        DB::table('users')->delete() ;
        User::create([
            'name' => 'Admin',
            'email' => '[email protected]',
            'password' => Hash::make('password')
        ]);

    }
}

모델 팩토리를 사용하여 데이터 삽입

당신은 당신의 씨앗 안에서 모델 공장을 사용할 수 있습니다. 그러면 3 명의 신규 사용자가 생성됩니다.

use App\Models\User;

class UserTableSeeder extends Illuminate\Database\Seeder{

    public function run(){
        factory(User::class)->times(3)->create();    
    }
}

시드와 같은 특정 필드를 암호처럼 정의 할 수도 있습니다. 그러면 동일한 암호로 3 명의 사용자가 생성됩니다.

factory(User::class)->times(3)->create(['password' => '123456']);    

MySQL 덤프로 시드하기

시드를 작성하는 이전 예를 따르십시오. 이 예제는 MySQL Dump를 사용하여 프로젝트 데이터베이스에 테이블을 시드합니다. 테이블은 시드하기 전에 만들어야합니다.

<?php

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder
{

    /**
     * Run the database seeds.
     *
     * @return void
     */
     public function run()
     {
         $sql = file_get_contents(database_path() . '/seeds/users.sql');
    
         DB::statement($sql);
      }
}

우리의 $ sql은 users.sql 덤프의 내용이 될 것입니다. 덤프에는 INSERT INTO 문이 있어야합니다. 귀하의 덤프를 보관하는 곳까지 당신에게 달려 있습니다. 위의 예에서 프로젝트 디렉토리 \database\seeds 저장됩니다. laravel의 도우미 함수 database_path() 를 사용하고 덤프의 디렉토리와 파일 이름을 추가합니다.

INSERT INTO `users` (`id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
(1, 'Jane', '[email protected]', 'superSecret', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00'),
(2, 'John', '[email protected]', 'sup3rS3cr3t', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00');

DB::statement($sql) 는 Seeder가 실행되면 삽입을 실행합니다. 이전 예제에서와 같이 UserTableSeeder 에서 제공하는 DatabaseSeeder 클래스에 UserTableSeeder 를 넣을 수 있습니다.

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UserTableSeeder::class);
    }
}

프로젝트 디렉토리 php artisan db:seed CLI에서 실행합니다. 또는 php artisan db:seed --class=UsersTableSeeder 사용하여 단일 클래스에 대해 Seeder를 실행할 수 있습니다.

faker 및 ModelFactories를 사용하여 시드 생성

1) 기본적인 간단한 방법

데이터베이스 기반 응용 프로그램은 종종 테스트 및 데모 목적으로 시스템에 미리 시드 된 데이터가 필요합니다.

이러한 데이터를 만들려면 먼저 시드 (seeder) 클래스를 만듭니다.

ProductTableSeeder

use Faker\Factory as Faker;
use App\Product;

class ProductTableSeeder extends DatabaseSeeder {

public function run()
{
    $faker = $this->getFaker();

    for ($i = 0; $i < 10; $i++)
    {
        $name =         $faker->word;
        $image =        $faker->imageUrl;
       
        Modelname::create([
            'name' => $name,
            'image' => $image,
        ]);
      }
    }
 }

시드 클래스를 호출 할 수 있도록 호출하려면 DatabaseSeeder 클래스에서 호출 할 수 있습니다. 실행하려는 시드의 이름을 전달하면됩니다.

Illuminate \ Database \ Seeder를 사용하십시오.

class DatabaseSeeder extends Seeder {

    protected $faker;

    public function getFaker() {
        if (empty($this->faker)) {
            $faker = Faker\Factory::create();
            $faker->addProvider(new Faker\Provider\Base($faker));
            $faker->addProvider(new Faker\Provider\Lorem($faker));
        }
        return $this->faker = $faker;
    }
    public function run() {
        $this->call(ProductTableSeeder::class);
    }
}

Seeder를 작성한 후에 $ composer dump-autoload 를 실행하는 것을 잊지 마십시오. (artisan 명령 $ php artisan make:seeder Name seeder를 작성하지 않는 한, 작곡가가 자동으로 자동로드하지 않기 때문에)

이제이 장인 명령 php artisan db:seed 를 실행하여 시드 할 준비가되었습니다 php artisan db:seed

2) 모델 공장 사용

먼저 App/database/factories/ModelFactory.php 각 모델에 대한 기본 속성 집합을 정의해야합니다.

예를 들어 사용자 모델을 사용하면 ModelFactory가 어떻게 생겼는지를 알 수 있습니다.

$factory->define(App\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->email,
        'password' => bcrypt(str_random(10)),
        'remember_token' => str_random(10),
    ];
});

이제 테이블 php artisan make:seeder UsersTableSeeder 생성합니다. php artisan make:seeder UsersTableSeeder

추가

public function run()
{
    factory(App\User::class, 100)->create()
}

이것을 DatabaseSeeder 추가하십시오.

public function run()
{
    $this->call(UsersTableSeeder::class);
}

그러면 100 개의 레코드가있는 테이블이 생성됩니다.



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