چطور با استفاده از Seeder و Factory و Faker، در لاراول دیتای Fake ایجاد کنیم؟
برای صرفهجویی در زمان و سرعت بخشیدن به کارمان میتوانیم با استفاده از Faker و Factory اقدام به ایجاد و ورود دادههای Fake و انبوه در دیتابیس خود کنیم که در زیر مراحل آن را به صورت ساده و به دور از هر پیچیدگی و توضیحات اضافه ذکر میکنم.
سناریو: قصد دارم برای کاربر با آیدی 1 خود نوشتههای متعددی در دیتابیس و جدول posts ایجاد کنم.
1- ایجاد Seeder
ابتدا با دستور زیر یک seeder برای post ایجاد میکنم:
php artisan make:seeder PostSeeder
سپس متد زیر را در آن اضافه میکنم که اعلام میکند که 50 بار factory را که جلوتر ایجاد خواهیم کرد، اجرا کن.
public function run()
{
Post::factory()
->count(50)
//->hasPosts(1) //این مورد که کامنت شده برای موارد شخصیتر است
->create();
}
2- ایجاد Factory
حال نیاز است که یک فکتوری ایجاد کنم:
php artisan make:factory PostFactory
در فکتوری مورد نظر نیز مشخص میکنیم که دیتای مورد نظرمان در جدول مربوطه که posts است، به چه صورت وارد شود و من مشخص کردهام که این اطلاعات برای کاربر با id شماره 1 وارد شوند که شما بسته به نیاز و دیتابیس و جدولتان میتوانید موارد دلخواه خود را وارد کنید و مواردی که من وارد کردهام صرفاً به صورت sampleاند و پیشنهاد میکنم برای استفاده از حداکثر کارایی faker نگاهی به وبسایت زیر داشته باشید که اطلاعاتی خوبی در اختیارتان قرار خواهند داد:
https://github.com/fzaninotto/Faker/blob/master/readme.md
public function definition()
{
return [
'user_id' => '1',
'title' => Str::random(10),
'slug' => Str::random(10),
'summary' => $this->faker->paragraph,
'content' => $this->faker->paragraph,
'password' => 'password',
'slider' => '0',
'status' => '1',
'display' => '1',
'views' => $this->faker->biasedNumberBetween($min = 1, $max = 500, $function = 'sqrt'),
'feature_image' => 'feature_image',
'image_2' => 'image_2',
'image_3' => 'image_3',
];
}
3- در DatabaseSeeder.php که موجود است، Seederهای مورد نظرمان را مشخص میکنیم. در اینجا من PostSeeder را اضافه میکنم.
public function run()
{
// \App\Models\User::factory(10)->create();
$this->call(UserSeeder::class);
$this->call(PostSeeder::class);
}
4- در نهایت با دستور زیر، فکتوری ما run خواهد شد و اقدام به ایجاد دادههای Fake مورد نظرمان خواهد کرد.
php artisan db:seed
توی وبسایتم سعی میکنم محتوایی که تصور کنم ارزشمنده و به بقیه کمکی میکنه رو منتشر کنم. امیدوارم از مطالب وبسایت بتونید استفاده کنید و به کارتون بیاد. در ضمن اگه پروژهی تحت وبی دارید که نیاز به برنامهنویسی و اجرا داره، میتونید با شماره انتهای صفحه با من تماس بگیرید تا در موردش با هم صحبت کنیم.