2016-05-31 17 views
2

Ich verwende diese package für Laravel 5.2, und ich ein anderes Verhalten erhalten, wenn unterschiedliche Ergebnisse aus Controller Ansicht mit Senden:Laravel RBAC verschiedene Verhaltensweisen

Wenn ich eine Abfrage wie folgt:

$users = User::all(); 

dann in meiner Sicht kann ich für Benutzerrollen überprüfen wie folgt aus:

@if($user->is('admin')) 

Welches Verhalten erwartet wird, aber wenn ich ein Ergebnis von Abfrage wie folgt an:

$users = User::leftjoin('role_user', 'users.id', '=', 'role_user.user_id') 
       ->orderBy(DB::raw('role_id IS NULL')) 
       ->groupBy('users.id') 
       ->orderBy('role_id') 
       ->get(); 

Ich kann nicht einen Scheck tun wie soll ich zu, aber ich brauche es wie folgt zu überprüfen:

@if($user->role_id ==1) 

Antwort

1

Es ist gut, die Haupttabelle hinzufügen wählen, wenn Sie die Abfrage verbindet :

$users = User::leftjoin('role_user', 'users.id', '=', 'role_user.user_id') 
      ->select('users.*') 
      ->orderBy(DB::raw('role_id IS NULL')) 
      ->groupBy('users.id') 
      ->orderBy('role_id') 
      ->get(); 

dann in der Ansicht:

@foreach($users as $user) 
    @if($user->is('admin')) 
     (...) 
    @endif 
@endforeach 

Wenn das nicht hilft, müssen Sie überprüfen, welcher Typ item ist. Wahrscheinlich unterbricht ein anderes Bündel die Abfrage der Modelle und gibt ein Modell stdClass statt User zurück.

+0

Wusste nicht, dass das einen Unterschied machen würde, danke, dass es gelöst hat! – Marco