Factory در لاراول، در این مطلب کار با Factory ها که یکی از ویژگی های مهم در فریم ورک لاراول می باشد را یاد خواهیم گرفت.
قبل از اینکه بریم سراغ نحوه استفاده از factory ها اجازه بدید یک تعریف از آن داشته باشیم.
Factory در لاراول چیست؟
ما با استفاده از Factory ها می توانیم به تعداد دلخواه داده ها یا رکوردهای فیک بسازیم و در در جداول پایگاه داده درج کنیم.
این کار دقیقا شبیه کاری هست که seeder ها انجام می دهند با این تفاوت که در seeder ما باید برای درج هر رکورد اطلاعات آن را بنویسیم اما در Factory این کار رو به شکل کاملا اتوماتیک انجام میدیم. اگر با seeder آسنا نیستید می توانید مقاله “مفهوم seeder در لاراول” را مطالعه بفرمایید.
Factory ها چگونه کار می کنند؟
کارخانه یا Factory دارای یک سری متد هست که به واسطه آنها داده های فیک تصادفی تولید می کند و در فیلدهایی که ما مشخص می کنیم آنها رو درج می کند.
بریم مثال ببینیم که کامل متوجه شیم…
آموزش استفاده از Factories در لاراول
فرض کنید من یک جدول به نام “post” دارم که شامل فیلدهای تصویر زیر هست.
حالا می خوام از طریق Factory داده های فیک در آن ایجاد کنم.
برای اینکار از دستور زیر استفاده می کنم.
php artisan make:factory PostFactory
factory ها در مسیر زیر قرار دارند:
database -> factories -> UserFactory.php
فایل یا Factory که ایجاد کردیم رو باز می کنیم و با استفادهاز متدهای آن اطلاعات فیک رو فیلدهای جداول بر اساس ستون های آن تولید می کنیم.
*/
class PostFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->unique()->sentence(),
'excerpt' => $this->faker->realText($maxNbChars = 50),
'body' => $this->faker->text(),
'image_path' => $this->faker->imageUrl(640, 480),
'is_published' => 1,
'min_to_read' => $this->faker->numberBetween(1, 10)
];
}
}
ما هر زمان که بخواهیم با دیتابیس کار کنیم نیاز به “model” داریم و این یک قانون هست. پس برای جدول دیتابیس post یک modal به صورت زیر ایجاد می کنم.
model ها در مسیر زیر قرار دارند.
app -> Models
در این مرحله برای معرفی و اجرای Factory وارد فایل “DatabaseSeeder.php” میشیم و کدهای آن رو به شکل زیر تغییر میدیم.
create();
}
}
در نهایت وارد ترمینال ادیتور یا CMD میشم و با استفاده از دستور زیر Factory خودم رو اجرا می کنم.
php artisan db:seed
نتجه رو ببینیم:
ما می تونیم به شکل زیر اطلاعات یک فیلد خاص رو هم به دلخواه تغییر بدیم.
public function run()
{
Post::factory(100)->create([
'body' => 'This is Overriding the body post'
]);
}
جمع بندی
در این مقاله کوتاه سعی کردم نحوه ایجاد Factory ها و همچنین استفاده از آنها در لاراول رو توضیح بدم. امیدوارم این مطلب براتون مفید واقع شده باشه.
لطفا اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.