توليد البيانات الوهمية (Factories & Seeders)
عند تطوير تطبيق، ستحتاج لمئات السجلات لاختبار ميزات مثل الترقيم (Pagination) أو البحث. كتابة هذه البيانات يدوياً هو مضيعة للوقت. هنا يأتي دور Factories لتوليد بيانات وصفية عشوائية، و Seeders لضخ هذه البيانات في قاعدة البيانات بلمسة زر. هذا الثنائي يجعل بيئة التطوير الخاصة بك واقعية وقابلة للاختبار في ثوانٍ.
1. ماهي الـ Factories؟
المصنع (Factory) هو قالب يحدد كيف يجب أن تبدو البيانات العشوائية لكل حقل في جدولك. يعتمد لارافيل على مكتبة Faker لتوليد أسماء، إيميلات، ونصوص واقعية.
php artisan make:factory PostFactory
مثال لتعريف مصنع للمقالات:
public function definition(): array
{
return [
'title' => fake()->sentence(),
'body' => fake()->paragraphs(3, true),
'user_id' => 1,
];
}
2. ماهي الـ Seeders؟
البذور (Seeders) هي الكلاسات التي تستدعي المصانع لتقوم بحقن البيانات فعلياً. الملف الرئيسي هو database/seeders/DatabaseSeeder.php.
// داخل DatabaseSeeder
public function run(): void
{
// إنشاء 50 مقالاً عشوائياً
\App\Models\Post::factory(50)->create();
}
3. تشغيل عملية الضخ
بعد إعداد المصنع والسييدر، يمكنك ملء قاعدة البيانات بأمر واحد فقط:
php artisan db:seed
نصيحة: إذا أردت مسح البيانات القديمة وإعادة البناء والضخ في خطوة واحدة، استخدم:
php artisan migrate:fresh --seed.
أسئلة شائعة حول Seeders
عادة لا تستخدم البيانات الوهمية في الإنتاج. ولكن يمكنك استخدام Seeders لضخ البيانات الثابتة والضرورية للموقع مثل قائمة الدول، أو حساب الأدمن الأساسي.
توفر مكتبة Faker وظائف مثل
fake()->imageUrl() التي تعطيك روابط لصور عشوائية من خدمات خارجية، مما يجعل شكل الموقع واقعياً جداً أثناء التطوير.
الدرس القادم
علاقات Eloquent القوية
قاعدة البيانات لا تتكون من جداول منفصلة. سنتعلم كيف نربط الجداول ببعضها (واحد إلى كثير، كثير إلى كثير) باستخدام القوة الحقيقية لعلاقات Eloquent.
تعلم علاقات الجداول