مارک پلاس

تکنولوژی نوین اینترنتی

Factories لاراول

دسته‌بندی‌ها

Factories لاراول
Factories لاراول


 بریم سراغ یکی از ابزارهای فوق‌العاده کاربردی در لاراول برای ساخت داده‌های تستی:

🏭 Factories در لاراول


🧩 چی هستن Factories؟

Factories ابزاری هستن برای ساخت سریع و آسان رکوردهای تستی در دیتابیس. مخصوصاً برای:

  • تست با PHPUnit

  • Seed کردن دیتابیس

  • توسعه سریع API با داده‌های فرضی


🛠 ایجاد یک Factory

فرض کن مدلی به نام Post داری. برای ساخت Factory:

bash
php artisan make:factory PostFactory --model=Post

فایل ساخته میشه در مسیر:
database/factories/PostFactory.php


✍️ ساختار یک Factory

php
use Illuminate\Database\Eloquent\Factories\Factory; class PostFactory extends Factory { protected $model = \App\Models\Post::class; public function definition() { return [ 'title' => $this->faker->sentence(), 'body' => $this->faker->paragraph(), 'user_id' => \App\Models\User::factory(), // رابطه ]; } }

✅ استفاده از $this->faker برای ساخت داده‌های فیک.


⚙️ استفاده از Factory برای ساخت داده

🔹 ۱. ساخت یک رکورد:

php
Post::factory()->create();

🔹 ۲. ساخت چند رکورد:

php
Post::factory()->count(10)->create();

🔹 ۳. ساخت بدون ذخیره در دیتابیس:

php
Post::factory()->make(); // فقط شیء بدون ذخیره

🔗 ساخت با روابط

php
User::factory() ->hasPosts(3) // هر کاربر ۳ پست ->create();

البته برای این مورد باید در UserFactory رابطه hasPosts() رو تعریف کنی.


🧪 استفاده در تست‌ها

php
public function test_user_has_posts() { $user = User::factory() ->hasPosts(5) ->create(); $this->assertCount(5, $user->posts); }

🌱 استفاده در Seeders

php
public function run() { \App\Models\Post::factory()->count(50)->create(); }

و اجرا:

bash
php artisan db:seed

📦 جمع‌بندی سریع

عملکد
ساخت Factorymake:factory
ساخت یک رکوردPost::factory()->create()
ساخت چند رکورد->count(10)->create()
ساخت بدون ذخیره->make()
همراه با روابط->hasPosts(3)->create()

محتوای مرتبط

پست‌های مرتبط