TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #113 1.13K
فصل چهار - مدل‌ها و Eloquent ORM

بخش هفتم -
Accessors و Mutators

به شما این امکان را می‌دهند که نحوه دسترسی به ویژگی‌های مدل یا نحوه تغییر و ذخیره‌سازی داده‌ها در مدل را سفارشی‌سازی کنید. شما می‌توانید Accessors برای نمایش داده‌ها به شکلی متفاوت و Mutators برای ذخیره‌سازی داده‌ها با فرمت موردنظر خود ایجاد کنید.

1- Accessors (دسترسی‌دهنده‌ها)
برای تغییر داده‌هایی استفاده می‌شود که هنگام دسترسی به یک ویژگی مدل نمایش داده می‌شوند.

فرض کنید یک مدل کاربر (User) دارید و می‌خواهید نام کاربر همیشه با حرف اول بزرگ نمایش داده شود.
protected function name(): Attribute
{
return Attribute::make(
get: fn ($value) => ucfirst($value)
);
}

در این مثال، هر زمانی که به ویژگی name مدل User دسترسی پیدا کنید، مقدار آن با حرف اول بزرگ برگردانده می‌شود.

2- Mutators (تغییر‌دهنده‌ها)
برای تغییر و اصلاح داده‌ها قبل از ذخیره‌سازی در دیتابیس استفاده می‌شوند.

فرض کنید می‌خواهید مطمئن شوید که هر زمان ایمیل کاربر ذخیره می‌شود، به حروف کوچک تبدیل شود.
protected function email(): Attribute
{
return Attribute::make(
set: fn ($value) => strtolower($value)
);
}

در این مثال، هر زمانی که ایمیلی به مدل User اختصاص داده می‌شود، قبل از ذخیره‌سازی به حروف کوچک تبدیل خواهد شد.

3- ترکیب Accessors و Mutators
در بسیاری از موارد، شما می‌توانید Accessors و Mutators را در یک متد به صورت ترکیبی استفاده کنید. یعنی یک متد هم می‌تواند داده‌ها را هنگام دسترسی تغییر دهد (Accessor) و هم هنگام ذخیره‌سازی (Mutator).

فرض کنید می‌خواهید نام کاربر هنگام دسترسی به آن با حرف بزرگ و هنگام ذخیره‌سازی با حروف کوچک مدیریت شود.
protected function name(): Attribute
{
return Attribute::make(
get: fn ($value) => ucfirst($value),
set: fn ($value) => strtolower($value)
);
}

در این مثال، نام کاربر هنگام بازیابی از دیتابیس با حرف بزرگ نمایش داده می‌شود، اما قبل از ذخیره به حروف کوچک تبدیل می‌شود.

4- استفاده از Accessors و Mutators
هنگامی که Accessors و Mutators تعریف می‌شوند، شما می‌توانید به‌طور معمول از ویژگی‌های مدل استفاده کنید.
$user = new User();
$user->name = 'jane doe';
echo $user->name; // Jane doe


5- روش قدیمی (ورژن 8 به قبل)
در روش قدیمی، برای تعریف Accessors و Mutators باید از متدهای
get{AttributeName}Attribute و set{AttributeName}Attribute
استفاده می‌کردید.
public function getNameAttribute($value)
{
return ucfirst($value);
}

public function setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}

اما در استفاده با روش جدید یکسان است.

🔖 #Laravel, #PHP, #لاراول, #فصل_۴

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • ❤ 8
  • 👍 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 →