تفاوت بین متد و پراپرتی

پرسیده شده
فعالیت 1039 روز پیش
دیده شده 515 بار
0

سلام ,

 

زمانی که یک relation بین دو مدل ایجاد می کنیم چه تفاوتی بین صدا زدنش به عنوان پراپرتی و متد( رابطه زده شده ) وجود داره ؟

 

مثلا :

trait HasPermission
{
    public function permissions()
    {
        return $this->belongsToMany(Permission::class);
    }
    
    public function method()
    {
    	return $this->permissions(); // ??
    }
    
    public function property()
    {
    	return $this->permissions; // ??
    }
}

مشکل دیگه اینکه متد hasPermission نی که نوشتیم همیشه false بر میگردونه ..

 public function hasPermission(string $permission)
 {
     dd($this->permissions->contains($permission));
 }
فایل پیوست

Faraz salehi
Faraz salehi

30 خرداد 00

1
حذف شده

سلام 

 

تفاوت این هستش که زمانی که شما به صورت Property صدا میزنید به شما یک نمونه از Collection برمیگردونه و زمانی که به عنوان متد صدا میزنید یک نمونه از Laravel Relation برمیگردونه که هر کدوم متد‌های خاص خودشون رو دارن.

 

در مورد سوال دومتون هم باید بگم که به این خاطر که شما دارید string دریافت میکنید در صورتی که باید یک Object از اون Permission رو دریافت کنید تا بتونید از متد Contains استفاده کنید.

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

1 تیر 00