TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #352 321
فصل پنج - 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 #لاراول #فصل_۵
@AmirhDeveloper
.
  • ❤ 3
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
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 →