アプリケーションを構築するときは、小規模、中規模、または大規模であっても構いません。アプリケーション内でテスト データを使用できるようにすることは避けられず、重要です。
それでは、2 つの異なるシナリオを使って、簡単なものから高度なものまで始めてみましょう。
私。すべてのアプリケーションまたは大部分のアプリケーションにはユーザーが必要です。場合によっては、ユーザーを 管理者 または通常の ユーザー として分類/タグ付けしたい場合があります。そこで、以下にリストされているテーブル仕様を使用して、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(); }); }
Users テーブルのシーダー クラスを作成します。
php artisan make:seeder UserSeeder
したがって、作成したばかりのシーダーの値を作成するには、すべての Laravel アプリケーションに付属するデフォルトの Faker パッケージを使用する必要があります。
一度に 100 人のユーザーを生成するには、まず for ループを実行し、次のように偽/疑似データを各列に渡します。
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++; }
最後の 2 つの箇条書きは一緒に実装する必要があります
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 人のユーザーごとに、staffs テーブルと呼ばれる別のテーブルで詳細を参照する必要があります。
各スタッフはユーザーに属している必要があり、また部門にも属している必要があります。そのため、これを行うには、前に作成したすべての部門を取得して、部門 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 のデータベースシーダーを使用してデータを簡単に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。