2016-09-19 72 views
3

我想檢查用戶是否爲admin。檢查用戶是否是laravel中的管理員

User table

id | role_id | name 
1 | 3  | test 

Role table

id | role  
1 | user  
2 | employee 
3 | admin  

User model

class User extends Authenticatable 
{ 
use Notifiable; 

protected $fillable = [ 
    'name', 'email', 'gender', 'password', 
]; 

protected $hidden = [ 
    'password', 'remember_token', 
]; 

public function roles() 
{ 
    return $this->belongsToMany('App\Role'); 
} 

public function isAdmin() { 
    return $this->roles()->where('role', 'user')->exists(); 
} 

}

Role model

class Role extends Model 
{ 
// 
} 

Blade template

@if(Auth::user()->isAdmin()) 
    user is admin 
@endif 

我無法找到答案我有什麼在function isAdmin沒有增加任何新的作品。現在我得到錯誤基表或視圖找不到。

+0

的可能的複製[Laravel:如何檢查是否用戶是管理員?](http://stackoverflow.com/questions/37093523/laravel-how-to-check-if- user-is-admin) –

+0

未找到基表或視圖。這個錯誤是當你嘗試訪問表時,這個名字不是複數,最後沒有's'。 –

+0

@BorisShchegolev我試過了,它不工作。 – twoam

回答

1

試試這個

class User extends Authenticatable 
{ 
use Notifiable; 

protected $fillable = [ 
    'name', 'email', 'gender', 'password', 
]; 

protected $hidden = [ 
    'password', 'remember_token', 
]; 

public function role() 
{ 
    return $this->belongsTo('App\Role'); 
} 

public function isAdmin() { 
    if($this->role->name == 'admin'){ 
     return true; 
    } 
    return false; 
} 
+0

這個工程!是否有可能這樣做?如果($ this-> role-> name == $ roleName){0}返回true; } return false;' } – twoam

+0

很高興聽到它的工作。是的,這是可能的,但你會從哪裏傳遞角色? –

+0

但我不想爲每個角色寫一個函數。是否可以爲所有人制作一個功能? – twoam

相關問題