アプリケーションを構築するときは、小規模、中規模、または大規模であっても構いません。アプリケーション内でテスト データを使用することは避けられず、重要です。
それでは、2 つの異なるシナリオを使って、簡単なものから高度なものまで始めてみましょう。
私。すべてのアプリケーションまたは大部分のアプリケーションにはユーザーが必要です。場合によっては、ユーザーを Admin または通常の Users として分類/タグ付けしたい場合があります。そこで、以下にリストされているテーブル仕様を使用して、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 $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 人のユーザーが作成され、データベースに挿入されます。
それはとても簡単です。
それでは、より高度なソリューションに進みます。
次を作成する必要があります:
users テーブルがどのようになるかはすでにわかっています。スタッフ テーブルと部門テーブルがどのようになるかを見てみましょう。
スタッフテーブル
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 $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 $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 人のユーザーごとに、スタッフ テーブルと呼ばれる別のテーブルで詳細を参照する必要があります。
各スタッフはユーザーに属している必要があり、また部門にも属している必要があります。そのためには、前に作成したすべての部門を取得して、部門 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 $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count ; } $faker = Faker::create(); if ($count == 10) { $departments = Department::pluck('id')->toArray(); for ($i=0; $i $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
ご質問がございましたら、お気軽にお問い合わせください。コーディングを楽しんでください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3