【问题标题】:Laravel - How to get Entrust Roles of a specific userLaravel - 如何获取特定用户的委托角色
【发布时间】:2016-08-06 05:55:00
【问题描述】:

我正在使用 Laravel 并使用 Zizaco Entrust 制作一个小作品。

以管理员身份登录时,我想查看特定用户的所有角色

我搜索了一段时间,但没有找到任何线索... 我该如何使用 Entrust 或使用 SQL 查询?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    在你的用户类中添加

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

    然后你可以获取特定用户的所有角色

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

    【讨论】:

    • $roles = $user->roles; 确实有效,但返回数组中的所有角色。当我执行$roles = $user->roles[0]->name; 时,我可以获得特定的行,例如 name 和 created_at。但是我需要为所有角色循环这个(所以不是[0])......我应该怎么做(在视图中)?
    • 使用foreach 循环一个集合,在视图中使用blade 语法,类似于@foreach ($user->roles as $role) {{ $role->name }} @endforeach
    • 正想说我之前试过了,不行,现在可以了。。一定是笔误:/
    【解决方案2】:

    如果您使用的是 Zizaco\Entrust,则用户模型中不需要新角色方法。 Roles 方法已存在于 EntrustUserTrait 类中。您只需要在 User 类中使用这一行:

    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'));
    }
    

    在刀片循环中 $user->roles 在 $users 循环中,因为 $user->roles 是集合,即使用户只有一个角色。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-06
      • 2023-03-26
      • 2015-02-01
      • 2014-12-12
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多