我正在与Laravel合作并使用 Zizaco Entrust 。
以管理员身份登录后,我想查看特定用户的所有角色。
我搜索了一段时间,但没有发现任何线索...... 如何使用 Entrust 来实现,还是应该使用SQL查询?
答案 0 :(得分:8)
在您的用户类中添加
public function roles()
{
return $this->belongsToMany('Role','assigned_roles');
}
然后您可以获得特定用户的所有角色
$user = User::with('roles')->find(1);
$roles = $user->roles;
答案 1 :(得分:1)
如果您使用的是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
.....
}
在您的UsersController中,您可以选择具有角色的用户(索引方法):
<?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'));
}
在$ users环境中的$ user-&gt;角色中循环,因为即使用户只有一个角色,$ user-&gt;角色也是集合。
@foreach($users as $user)
@foreach($user->roles as $role)
{{ $role->display_name }}
@endforeach
@endforeach