عند إنشاء تطبيق، سواء كان صغيرًا أو متوسطًا أو كبيرًا. إن وجود بيانات اختبارية للتلاعب بها في التطبيق أمر لا مفر منه ومهم.
لذلك دعونا نبدأ من البسيط إلى المتقدم بسيناريوهين مختلفين.
أنا. يجب أن يكون لجميع التطبيقات أو غالبية التطبيقات مستخدمين. في بعض الأحيان، نرغب في تصنيف/وضع علامة على المستخدمين كـ مسؤول أو مستخدمين عاديين. لذلك دعونا ننشئ أداة بذارة بسيطة تضم 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
لذلك، لإنشاء قيم للبذارة التي أنشأناها للتو، نحتاج إلى استخدام حزمة Faker الافتراضية التي تأتي مع كل تطبيق Laravel.
لإنشاء 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 مستخدم وإدراجهم في قاعدة البيانات.
الأمر بهذه البساطة.
الآن، إلى حل أكثر تقدمًا.
نحتاج إلى إنشاء:
نحن نعلم بالفعل كيف سيبدو جدول المستخدمين، فلننظر إلى الشكل الذي سيبدو عليه جدول الموظفين والقسم.
جدول الموظفين
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 ; }
يجب تنفيذ النقطتين الأخيرتين معًا
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 أقسام أولاً.
ثم قمنا بإعداد عداد للتحقق مما إذا تم إنشاء جميع الأقسام العشرة.
إذا كان شرط العداد صحيحًا، فإننا نقوم بإنشاء 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 $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