بخش دوم - Factories
لاراول هنگام کار با فکتوریها، مجموعهای از متدها و پراپرتیها را ارائه میدهد که به شما کمک میکنند دادههای نمونه پیشرفتهتری بسازید.
این متد ها درون کلاس فکتوری پیاده سازی می شوند.
1- متد definition
این متد اصلی ترین متد برای تعریف دادههای پیشفرض فکتوری استفاده میشود. دادههای تولید شده توسط Faker در این متد تعریف میشوند.
این متد یک آرایه برمی گرداند که شامل نام فیلد ها به عنوان key و مقدار فیلد ها به عنوان value می باشد.
class UserFactory extends Factory
{
protected $model = \App\Models\User::class;
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'password' => bcrypt('password'),
];
}
}
2- متد unverified
این متد میتواند حالتی خاص برای فکتوری شما تعریف کند. مثلاً دادههایی را تولید کند که ایمیل کاربر تایید نشده باشد.
وقتی شما از متد unverified استفاده میکنید، در واقع یک وضعیت خاص برای فیلدها تعریف میکنید که باعث میشود برخی از فیلدها مانند email_verified_at برای رکوردهای ساخته شده، مقدار null داشته باشند.
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
// Usage:
User::factory()->unverified()->create();
این متد یک state جدید ایجاد می کند، یعنی می توانید برخی از مقادیر فیلدها را در unverified تغییر دهید بدون این که کل تعریف پیشفرض در متد definition را تغییر دهید.
3- متد suspended
یک حالت خاص دیگر (مانند unverified) برای دادهها تعریف میکند. این متد معمولاً برای افزودن وضعیت خاص به رکوردها استفاده میشود.
public function suspended()
{
return $this->state(function (array $attributes) {
return [
'is_suspended' => true,
];
});
}
// Usage:
User::factory()->suspended()->create();
4- متد configure
متدی که به شما اجازه میدهد عملیات سفارشیسازی یا رویدادهایی را قبل یا بعد از ایجاد رکوردها اجرا کنید. معمولاً برای تنظیم مقادیر اضافی یا اعمال تغییرات خاص استفاده میشود.
public function configure()
{
return $this->afterCreating(function (User $user) {
$user->profile()->create([
'bio' => 'This is a sample bio.',
]);
});
}
// Usage:
User::factory()->create();
این متد پس از اجرای متد craete به طور خودکار ایجاد می شود.
همچنین می توانید به جای afterCreating از afterMaking استفاده کنید درصورت استفاده از متد make.
5- متد newFactory
برای اتصال یک مدل به فکتوری استفاده میشود. این متد معمولاً در مدلها تعریف میشود و هدف اصلی آن مشخص کردن فکتوری مرتبط با مدل است تا بتوان به سادگی و بدون نیاز به تنظیم دستی، رکوردهای مدل را با استفاده از فکتوری تولید کرد.
class User extends Authenticatable
{
use HasFactory;
protected static function newFactory()
{
return UserFactory::new();
}
}
درصورتی که نام مدل و فکتوری شما استاندارد باشد (مثلا User و UserFactory به ترتیب برای مدل و فکتوری)، لاراول به طور خودکار این عملیات را انجام می دهد.
در قسمت بعدی با تمامی متد های مرتبط با فکتوری که از مدل ها قابل فراخوانی هستند آشنا می شویم.
#laravel #لاراول #فصل_۵
@AmirhDeveloper
.