Я сделал по книге роли для моей программы Laravel.Проблема возникает в одном конкретном случае, один из методов в пользовательской модели всегда «всплывающий» ... Независимо от того, что пользователь имеет для role_id, метод всегда показывает имя определенной роли, в данном случае «модератор».Не знаю, что с ним не так, или, по крайней мере, я его не вижу ...
Вот модель пользователя:
<?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',"avatar"
];
/**
* 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 rola(){
return $this->belongsTo("App\Roles", "id");
}
public function posts(){
return $this->hasMany("App\Post");
}
public function comments(){
return $this->hasMany("App\Comment");
}
public function isAdmin()
{//dd($user);
return $this->rola()->where('role', 'administrator');
}
public function isModerator()
{//dd($user);
return $this->rola()->where('role', 'moderator');
}
public function isUser()
{//dd($user);
return $this->rola()->where('role', 'user');
}
public function isPeon()
{//dd($user);
return $this->rola()->where('role', 'peon');
}
}
Вот модель ролей:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Roles extends Model
{
public function rola(){
return $this->hasMany("App\User", "role_id");
}
}
И, например, если просто отобразить в любом виде:
{{auth()->user()->rola->id}} <br> // 2 <- correct
{{auth()->user()->role_id}} // 3 <- this should be 2 also.
Вот изображение моей схемы БД:
Иизображение таблицы ролей:
По умолчанию, каждый раз, когда новый пользователь регистрируется, он автоматически получает роль "peon" с идентификатором 4. Возможно, я не уверен, где моя ошибкая чего-то не вижу ...
Edit1:
Вот ссылка на github repo для тех, кто хочет взять гусакна это.