TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #133 1.04K
فصل پنج - Migrations and Database

بخش دوم - 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, #PHP, #فصل_۵, #لاراول

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • 👍 4
  • ❤ 2
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →