Laravel – Как получить Доверенные роли определенного пользователя

Я делаю небольшую работу с Laravel и используя Zizaco Entrust .

При входе в систему как администратор я хочу видеть все роли определенного пользователя.

Я искал какое-то время, но не нашел подсказки … Как я могу это сделать с помощью Entrust или использовать SQL-запросы?

В вашем классе пользователя добавьте

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

Затем вы можете получить все роли для определенного пользователя

 $user = User::with('roles')->find(1); $roles = $user->roles; 

Если вы используете Zizaco \ Entrust, вам не нужен метод новых ролей в модели пользователя. Метод ролей уже существует в классе EntrustUserTrait. Эта строка нужна только внутри класса пользователя:

 use EntrustUserTrait; 

как это:

 <?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use Zizaco\Entrust\Traits\EntrustUserTrait; class User extends Authenticatable { use EntrustUserTrait; // add this trait to your user model ..... } 

В вашем UserController вы можете выбрать пользователей с их ролями (метод индекса):

 <?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; use App\Http\Requests; class UsersController extends Controller { protected $users; public function __construct(User $users) { $this->users = $users; parent::__construct(); } public function index() { $users = $this->users->with('roles')->paginate(25); return view('users.index', compact('users')); } 

В вашей петле лезвия $ user-> ролей внутри цикла $ users, потому что $ user-> role – это коллекция, даже если у пользователя есть только одна роль.

 @foreach($users as $user) @foreach($user->roles as $role) {{ $role->display_name }} @endforeach @endforeach