با سلام من هنگام که از طریق یک کنترلر مقدار role به متد hasrole مربوط به مدل user ارسال می کنم
با ارور زیر مواجح میشم
Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsToMany::contains()
User.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function article()
{
return $this->hasMany(Article::class);
}
public function roles()
{
return $this->belongsToMany(role::class);
}
public function hasRole($role)
{
if (is_string($role)) {
return $this->roles()->contains('name', $role);
}
}
}
اینم کد مربوط به کنتر لر
return Auth()->user()->hasrole('maneger');
@hesammousavi
لطفا راهنمایی کنید
این کاملا مشخصه عزیزم شما اومدید توی کنترلر گفتید
return Auth()->user()->hasrole('maneger');
خوب این نمیتونه مقدار boolean رو در صفحه به شکل مستقیم نمایش بده اینو باید داخل شرط بزارید و ازش استفاده کنید
مشکلی که بالا هم داشتید راه حلش موردی بود که گفتم فقط یه جفت پرنتز اضافی
کاملا دلیل مشخصه چون شما بی دقتی کردید .
کد زیر رو جایگزین کنید حل میشه
return $this->roles->contains('name', $role);
این کدم تست کرده بودم ولی متاسفانه
The Response content must be a string or object implementing __toString(), "boolean" given.
با چنین اروری مواجح شدم
قدم به قدم چک کنید لطفا مثلا چک کنید
dd($this->roles)
چی بر میگردونه اسم کلاس Role شما حرف اولش با حرف بزرگ هست یا کوچیک ؟
این کاملا مشخصه عزیزم شما اومدید توی کنترلر گفتید
return Auth()->user()->hasrole('maneger');
خوب این نمیتونه مقدار boolean رو در صفحه به شکل مستقیم نمایش بده اینو باید داخل شرط بزارید و ازش استفاده کنید
مشکلی که بالا هم داشتید راه حلش موردی بود که گفتم فقط یه جفت پرنتز اضافی
@khanzadimahdi
همه که از اول حرفهای نبودن و نیستن، خود شما چقدر به مشکلاتی خوردی که برای بقیه بدیهی بوده ؟
بنابراین بجای اینکه به بقیه بگین این چیه پرسیدی، یه حرفهای از این دست یبار قضیه رو از دید اونا ببینین خیلیها واقعا با چیزهای که شما ساده میبینین مشکل دارن .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟