TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #326 390
فصل چهار - مدل‌ها و 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 #لاراول #فصل_۴
💠 @AmirhDeveloper
.
  • ❤ 2
  • 🔥 2
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 →