Я делаю небольшую работу с 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