🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Ali Yz
متد getCategoryNameAttribute
جامعه لاراول ایجاد شده در ۰۴ بهمن ۱۴۰۰

استاد این متد برای مدل Category هست.چطور ما داریم توی مدل video صداش میکنیم؟؟

و یک سوال دیگه این نام متد رو از کجا باید بدونیم که اینطوری باید بنویسیم

public function getCategoryNameAttribute()
{
    return $this->category->name;
}

و داخل view

$video->category_name

این پراپرتی از کجا داره میاد و چرا با این اسپل

سلام علی جان وقت بخیر

در کانسپت‌های لاراول یک امکان خیلی خوب ایجاد شده که به ما توانایی استفاده از getter و setter هایی رو میده کا روند کار در این اکوسیستم رو برامون آسون میکنه

زمانی که در یک مدل نیاز هستش ما روی یک مقدار خواست از اطلاعات جدول تغییری بدیم میتونیم از این امکان استفاده کنیم

برای مثال میخوایم نام کاربر رو به صورت حروف بزرگ دریافت کنیم

می تونیم به صورت کامل هارد کد هر بار که اطلاعات رو میخونیم از تابع ucwords استفاده کنیم و این تابع بار در جای جای کد ما وجود داره ، حالا کارفرما میگه نمیخوام این اتفاق بیافته و ما باید سیستم رو تغییر بدیم و چقدر سخت باید جستوجو کنیم و این تغییرات رو اعمال کنیم .

حالا لاراول به ما این امکان رو میده یک متود ایجاد کنیم با این ساختار :

//laravel ver 8
 public function getUserNameAttribute($value)
  {
      return ucwords($value);
  }

*دقت کنید که نام مورد نظر متود باید بین get و attribute باشه

حالا هروقت نیاز باشه که شما حرف رو بزرگ دریافت کنید باید به شکل زیر عمل کنید

$ModelName = ModelName::find(1);
$username = $ModelName ->user_name;

دقت کنید که چون نام رو در متود به صورت کمل کیس UserName نوشتیم در هنگام فراخوانی بصورت اسنیک صدا میزنیم User_name


امیدوار هستم که جواب سوال شمارو کامل توضیح داده باشم .

بهترین پاسخ
محمد نقلانی ۰۵ بهمن ۱۴۰۰، ۰۴:۵۴