2016-05-31 3 views
2

Я использую этот package для Laravel 5,2, и я получаю различное поведение при использовании отправки различных результатов от контроллера для просмотра:Laravel RBAC различное поведение

Когда я делаю запрос, как это:

$users = User::all(); 

Тогда на мой взгляд, я могу проверить для пользовательских ролей, как это:

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

Что ожидаемое поведение, но когда я посылаю результат из запроса, как это:

$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(); 

Я не могу сделать проверку, как я должен, но мне нужно, чтобы проверить это следующим образом:

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

ответ

1

Это хорошо, чтобы добавить выберите основную таблицу, когда вы запрашиваете присоединяется :

$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(); 

затем на ваш взгляд:

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

Если это не поможет, вам нужно будет проверить, какой тип item. Вероятно, некоторые другие пакеты прерывают запрос моделей и возвращают stdClass вместо модели User.

+0

Не знал, что это изменило бы, спасибо, что решил! – Marco