چطور با استفاده از Seeder و Factory و Faker، در لاراول دیتای Fake ایجاد کنیم؟

برای صرفه‌جویی در زمان و سرعت بخشیدن به کارمان می‌توانیم با استفاده از Faker و Factory اقدام به ایجاد و ورود داده‌های Fake و انبوه در دیتابیس خود کنیم که در زیر مراحل آن را به صورت ساده و به دور از هر پیچیدگی و توضیحات اضافه ذکر می‌کنم.

سناریو: قصد دارم برای کاربر با آیدی ۱ خود نوشته‌های متعددی در دیتابیس و جدول posts ایجاد کنم.

۱- ایجاد Seeder

ابتدا با دستور زیر یک seeder برای post ایجاد می‌کنم:

php artisan make:seeder PostSeeder

سپس متد زیر را در آن اضافه می‌کنم که اعلام می‌کند که ۵۰ بار factory را که جلوتر ایجاد خواهیم کرد، اجرا کن.

public function run()
{
	Post::factory()
			->count(50)
			//->hasPosts(1) //این مورد که کامنت شده برای موارد شخصی‌تر است
			->create();
}

۲- ایجاد Factory

حال نیاز است که یک فکتوری ایجاد کنم:

php artisan make:factory PostFactory

در فکتوری مورد نظر نیز مشخص می‌کنیم که دیتای مورد نظرمان در جدول مربوطه که posts است، به چه صورت وارد شود و من مشخص کرده‌ام که این اطلاعات برای کاربر با id شماره ۱ وارد شوند که شما بسته به نیاز و دیتابیس و جدولتان می‌توانید موارد دلخواه خود را وارد کنید و مواردی که من وارد کرده‌ام صرفاً به صورت 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',
	];
}

۳- در DatabaseSeeder.php که موجود است، Seederهای مورد نظرمان را مشخص می‌کنیم. در اینجا من PostSeeder را اضافه می‌کنم.

public function run()
{
	// \App\Models\User::factory(10)->create();
		$this->call(UserSeeder::class);
		$this->call(PostSeeder::class);
}

۴- در نهایت با دستور زیر، فکتوری ما run خواهد شد و اقدام به ایجاد داده‌های Fake مورد نظرمان خواهد کرد.

php artisan db:seed

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید