수색…
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 개의 레코드가있는 테이블이 생성됩니다.