2016-10-31 7 views
1

Я использую предадут для своих ролей и разрешений на Laravel 5.2 и у меня есть это на моем контроллере:Доступ в Laravel 5,2

$user = Auth::user(); 
    $rol = $user->roles; 
    dd($rol); 

в моей модели пользователя:

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

и получить это: Snapshot

Я пытаюсь подключиться и показывать «display_name» на моем представлении, и я не могу, помогите! Спасибо заранее.

ответ

0

Как вы определили в своей модели пользователя, пользователь может иметь много ролей (что означает, что у пользователя есть массив ролей), поэтому вам нужно определить, какую роль вы хотите отобразить для свойства display_name. Я вам хочу показать свойство display_name для всех доступных ролей для пользователя, это может быть достигнуто что-то вроде:

@foreach (Auth::user()->roles as $rol) 
    $rol->display_name 
@endforeach 

Я надеюсь, что это помогает очистить ваши сомнения.

0

Для видеть данные в использовании контроллера $user = Auth::user()->with('roles')

использование dd($rol->toArray()) для сбора проверки данных,

+0

Ошибка: Неопределенное свойство: Illuminate \ Database \ Eloquent \ Builder :: $ role –

0

Чтобы получить все роли пользователя в запятую, то вы можете use implode() как:

$rol->implode('display_name', ', '); 

затем он дает вам Admin, Manager

0

Как мне кажется Laravel's Entrust В библиотеке есть много разных отношений между пользователем и ролями. Так что если вы хотите, чтобы показать отображаемое имя на ваш взгляд, вы, чтобы получить элементы/объекты из коллекции вы получаете от вызова роли метод () Вы можете сделать это так:

// Collection of Roles 
$user_roles = $user->roles; 
foreach($user_roles as $user_role) { 
    echo $user_role->display_name; 
} 

Или если вы хотите, чтобы принести первый RLE вы можете использовать

$user_roles->first()->display_name

Я надеюсь, что это поможет вам!

+0

Это работает, спасибо! –