TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #351 208
فصل پنج - Migrations and Database

بخش دوم - Factories


فکتوری‌ها در لاراول ابزاری برای ایجاد سریع و راحت داده‌های نمونه (mock) برای تست و توسعه هستند. با استفاده از فکتوری‌ها، می‌توانید به راحتی رکوردهایی را در پایگاه داده تولید کنید، بدون اینکه نیاز باشد به صورت دستی داده‌ها را وارد کنید.

در تست‌های خودکار، می‌توانید با استفاده از فکتوری‌ها داده‌های نمونه ایجاد کنید تا رفتار اپلیکیشن خود را آزمایش کنید.

ساخت یک فکتوری:
برای ساخت فکتوری، می توانید از دستور زیر استفاده کنید:
php artisan make:factory UserFactory


این دستور یک فکتوری با نام UserFactory برای شما در مسیر database/factories ایجاد می کند.
در فایل فکتوری که ایجاد شده، می‌توانید داده‌های پیش‌فرض را تعریف کنید.

مثال: تعریف یک فکتوری برای مدل User:
class UserFactory extends Factory
{
protected $model = \App\Models\User::class;

public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => bcrypt('password'),
'remember_token' => Str::random(10),
];
}
}

هر فیلد جدول، مقدار پیش‌فرضی در اینجا دارد که به صورت خودکار تولید می‌شود.

استفاده از فکتوری:
برای تولید یک رکورد در پایگاه داده:
User::factory()->create();

این کد یک رکورد تست برای شما ایجاد می کند.

برای تولید چندین رکورد:
User::factory()->count(10)->create();

این کد به تعداد مشخص شده، رکورد تست برای شما ایجاد می کند.

برای ایجاد یک رکورد ولی بدون ذخیره کردن آن:
$user = User::factory()->make();

این کد یک رکورد تست برای شما ایجاد می کند اما در دیتابیس ذخیره نمی کند.

مثال کامل:
فرض کنید یک جدول برای مقالات (Posts) دارید.
class PostFactory extends Factory
{
protected $model = \App\Models\Post::class;

public function definition()
{
return [
'title' => $this->faker->sentence(),
'content' => $this->faker->paragraph(),
'user_id' => \App\Models\User::factory(),
];
}
}


این کد یک جمله رندوم برای title، یک پاراگراف رندوم برای content، و یک کاربر جدید برای user_id ایجاد می کند.

فرض کنید می خواهیم 100 پست تستی ایجاد کنیم:
Post::factory()->count(100)->create();


این فکتوری به سادگی 100 پست تستی برای شما ایجاد خواهد کرد.

فکتوری‌ها ابزاری قدرتمند برای تولید داده‌های تستی و توسعه هستند.
به کمک آن‌ها می‌توانید به‌سرعت داده‌های مرتبط ایجاد کرده و تست‌های خود را ساده‌تر و سریع‌تر انجام دهید.
فکتوری‌ها انعطاف‌پذیر هستند و می‌توانید شرایط مختلف (مانند ایجاد رکوردهای مرتبط) را پیاده‌سازی کنید.

در پست های بعدی به طور کامل به فکتوری ها خواهیم پرداخت.

#laravel #لاراول #فصل_۵
@AmirhDeveloper
.
  • 🔥 7
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →