@ali.bayat
@mhyeganeh
@sina.it91
من در یک آموزشی دیدم طرف یک فانکشن به نام access در مدل userساخت و اون رو در کنترلر اینجوری فراخوانی کرد میشه توضیح بدید که mutator هست یا یک روش دیگه ای است ممنون میشم با مثال بگید
user->access
چیزی که میگید بیشتر شبیه Accessor هست. مثلا فرض کنید برای کاربری فیلدهای firstName و lastName وجود داره ولی در قسمت های زیادی از پروژمون نیاز داریم که اسم کامل یعنی ترکیب این دو رو نمایش بدیم. بجای اینکه همیشه کد زیر رو تکرار کنیم:
{{ $user->firstName }} {{ $user->lastName }}
کافیه یک Accessor در مدل User ایجاد کنیم به این شکل:
/**
* Get the user's full name.
*
* @return string
*/
public function getFullNameAttribute()
{
return "{$this->firstName} {$this->lastName}";
}
و از این به بعد هر جایی به اسم کامل کاربر نیاز داشتیم میتونیم به این شکل استفاده کنیم:
{{ $user->fullName }}
اگر دقت کنید ما داریم به شکلی رفرنس میدهیم که انگار یک فیلد بنام fullName وجود داره. در حالی که در پشت صحنه میفهمه که باید بسراغ متد getFullNameAttribute مدل User بره و از خروجی این متد استفاده کنه. این است جادوی Accessor ها در لاراول! و استفاده های مختلف و نامحدودی میشه از این قضیه کرد...
Mutator ها هم برعکس Accessor ها هستند و زمانی استفاده میشوند که بجای get کردن قصد set کردن داشته باشیم. مثلا میخواهیم بصورت اتومات همه تاریخ ها قبل از ثبت در دیتابیس به میلادی تبدیل شوند یا کاراکترهای عربی به فارسی تغییر پیدا کنند.
@mhyeganeh
نه
به این شکل هم صدا کرده بود
$user->access
```و در مدل هم به این شکل تعریف کرده بود
public function access(){}
محتوای داخل متد access چی بود خوب...؟
میتونه تعریف Eloquent Relation باشه:
class User extends Model {
public function access() {
return $this->hasOne(Access::class);
//Or:
return $this->belongsTo(Access::class);
}
}
$user_access = $user->access;
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟