2016-09-19 11 views
3

Ich möchte überprüfen, ob der Benutzer Admin ist oder nicht.Überprüfen, ob Benutzer in Laravel ist

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 

Ich kann nicht die Antwort finden, was ich arbeite in den function isAdmin nichts hinzuzufügen habe. Jetzt bekomme ich den Fehler Basistabelle oder View nicht gefunden.

+0

Mögliche Duplikat [Laravel: Wie kann man überprüfen, ob Benutzer admin ist?] (Http://stackoverflow.com/questions/37093523/laravel-how-to-check-if- user-is-admin) –

+0

Basistabelle oder Ansicht nicht gefunden. Dieser Fehler tritt auf, wenn Sie versuchen, auf die Tabelle zuzugreifen, deren Name nicht Plural ist, dh, es gibt kein 's' am Ende. –

+0

@BorisShchegolev Ich habe das versucht und es funktioniert nicht. – twoam

Antwort

1

Versuchen Sie, diese

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

Das funktioniert! ist es möglich, es so zu machen? 'public function ist ($ roleName) { if ($ this-> rolle-> name == $ roleName) { return true; } return false; ' } – twoam

+0

Ich bin froh, dass es funktioniert hat. Ja, das ist möglich, aber von wo werden Sie die Rolle weitergeben? –

+0

Aber ich möchte nicht für jede Rolle eine Funktion schreiben. Ist es möglich, eine Funktion für alle zu machen? – twoam

Verwandte Themen