애플리케이션을 구축할 때는 소형, 중형, 대형이 가능합니다. 애플리케이션에서 가지고 놀 수 있는 테스트 데이터를 갖는 것은 불가피하고 중요합니다.
그럼 두 가지 시나리오를 통해 간단한 것부터 고급까지 시작해 보겠습니다.
나. 모든 애플리케이션 또는 대부분의 애플리케이션에는 사용자가 있어야 합니다. 때로는 사용자를 관리자 또는 일반 사용자로 분류/태그하고 싶을 때가 있습니다. 따라서 아래에 나열된 테이블 사양을 사용하여 100명의 사용자가 포함된 간단한 시더를 생성해 보겠습니다.
자, 시작합니다.
users 테이블에 시드하려면 물론 Laravel이 생성한 기본 사용자 마이그레이션 테이블이 있어야 합니다.
이 데모를 위해 테이블 마이그레이션은 다음과 같아야 합니다.
public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('first_name'); $table->string('last_name'); $table->string('email'); $table->string('password'); $table->enum('user_type', ['user','admin'])->default('user'); $table->rememberToken(); $table->timestamps(); }); }
사용자 테이블에 대한 시더 클래스를 생성합니다.
php artisan make:seeder UserSeeder
따라서 방금 생성한 시더에 대한 값을 생성하려면 모든 Laravel 애플리케이션과 함께 제공되는 기본 Faker 패키지를 사용해야 합니다.
한 번에 100명의 사용자를 생성하려면 먼저 for-loop를 수행하고 다음과 같이 가짜/의사 데이터를 각 열에 전달합니다.
use Faker\Factory as Faker; public function run() { $faker = Faker::create(); for(i = 0; i <= 99; i++) { User::create([ 'first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), // we might want to set this to a value we can easily remember for testing sake 'user_type' => $faker->randomElement(['admin', 'user']) ]); } }
이를 데이터베이스에 시드하려면 아래 명령을 실행해야 합니다.
php artisan db:seed --class=UserSeeder
이렇게 하면 100명의 사용자가 생성되어 데이터베이스에 삽입됩니다.
그렇게 간단합니다.
이제 더 발전된 솔루션을 만나보세요.
다음을 만들어야 합니다.
우리는 사용자 테이블이 어떻게 보일지 이미 알고 있습니다. 이제 직원 테이블과 부서 테이블이 어떻게 보일지 살펴보겠습니다.
직원 테이블
Schema::create('staff', function (Blueprint $table) { $table->id(); $table->string('first_name'); $table->string('last_name'); $table->string('email'); $table->foreignId('department_id')->references('id')->on('departments'); $table->foreignId('user_id')->references('id')->on('users'); $table->timestamps(); });
부서 테이블:
Schema::create('departments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); });
따라서 데이터베이스에 이러한 테이블을 포함하려면 마이그레이션을 실행해야 합니다.
이제 UserSeeder 클래스에 앞서 언급한 핵심 사항을 구현하겠습니다.
$now = now(); $count = 0; $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories', 'Books', 'Music', 'Movies & TV', 'Grocery' ]; for ($j=0; $j <= 9; $j++){ Department::create([ 'name' => $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count++; }
마지막 두 개의 중요 항목을 함께 구현해야 합니다
if ($count == 10) { // we need to make sure we have all 10 departments $departments = Department::pluck('id')->toArray(); for ($i=0; $i <= 99; $i++) { $user = User::create([ 'first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), 'user_type' => $faker->randomElement(['admin', 'user']), 'created_at' => $now, 'updated_at' => $now ]); Staff::create([ 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'user_id' => $user->id, 'department_id' => $faker->randomElement($departments), // pick random departments from DB 'created_at' => $now, 'updated_at' => $now ]); } }
설명:
먼저 10개의 부서를 만들었습니다.
그런 다음 10개의 부서가 모두 생성되었는지 확인하는 카운터를 설정합니다.
카운터 조건이 true이면 100명의 사용자를 생성합니다.
이 100명의 사용자 각각에 대해 직원 테이블이라는 다른 테이블에서 세부 정보를 참조해야 합니다.
각 직원은 사용자에게 속해야 하고 부서에도 속해야 하므로, 이를 위해서는 이전에 생성한 모든 부서를 가져와서 Department_id 열에 무작위로 삽입해야 합니다.
전체 UserSeeder 구현
$now = now(); $count = 0; $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories', 'Books', 'Music', 'Movies & TV', 'Grocery' ]; for ($j=0; $j <= 9; $j++){ Department::create([ 'name' => $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count++; } $faker = Faker::create(); if ($count == 10) { $departments = Department::pluck('id')->toArray(); for ($i=0; $i <= 99; $i++) { $user = User::create([ 'first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), 'user_type' => $faker->randomElement(['admin', 'user']), 'created_at' => $now, 'updated_at' => $now ]); Staff::create([ 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'user_id' => $user->id, 'department_id' => $faker->randomElement($departments), // pick random departments from DB 'created_at' => $now, 'updated_at' => $now ]); } }
그런 다음 다음을 실행하세요.
php artisan make:seeder --class=UserSeeder
궁금한 점이 있으면 주저하지 말고 남겨주세요. 즐거운 코딩하세요!
위 내용은 Laravel에서 Database Seeder를 사용하여 데이터를 쉽게 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!