بخش دوم - 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
.