用户在表

时间:2016-07-25 14:28:48

标签: laravel-5.2

我有一个Laravel应用程序。我使用this包来获取角色和权限。它很棒。

我现在想要显示所有用户及其角色的表格。目前我通过在UsersController中定义以下内容来解决它。

 public function listUsers()
    {
        $users_admin = Role::where('name', 'admin')->first()->users()->get();
        $users_buyers = Role::where('name', 'buyer')->first()->users()->get();
        $users_sellers = Role::where('name', 'seller')->first()->users()->get();

        return view('admin.users.index', [
            'users_admin' => $users_admin,
            'users_buyers' => $users_buyers,
            'users_sellers' => $users_sellers
            ]);
    }

在视图中,我有3个单独的循环来显示3个表(对于管理员用户,买家和卖家)。

毋庸置疑,我不喜欢这种方法,理想情况下我会有一个单独的表格显示用户的角色。

所以我的想法是我可以在UsersController中编写以下代码(或类似代码):

 $users = User::all();

虽然我的观点包含一个说明如下的foreach:

@foreach( $users_sellers as $user )
  <tr>
    <td align="center" class="hidden-xs">{{ $user->id }}</td>
    <td>{{ $user->name }}</td>
    <td>{{ $user->email }}</td>
    <td>{{ $user->displayRole($user->id) }}</td>
  </tr>
@endforeach

在上面的伪代码中,我定义了一个帮助程序,它根据user-id检索角色。问题是我无法弄清楚辅助函数中的内容?

注意:如果有其他(更好的)方法而不是助手,那对我来说也是有用的。

2 个答案:

答案 0 :(得分:1)

据我所知,此软件包在 User 模型中添加了一个关系,因此$user->roles应该是一个具有分配给当前用户的角色的集合。要不对每个用户进行查询,您应该急切地为用户加载他们的角色,例如:$users = User::with('roles')->get();

答案 1 :(得分:0)

控制器中,如果您在表格中有角色,请获取角色

public function listUsers()
    {
        $users_admin = Role::where('name', 'admin')->first()->users()->get();
        $users_buyers = Role::where('name', 'buyer')->first()->users()->get();
        $users_sellers = Role::where('name', 'seller')->first()->users()->get();
        $role = Role::get();

        return view('admin.users.index', [
            'users_admin' => $users_admin,
            'users_buyers' => $users_buyers,
            'users_sellers' => $users_sellers
            'role' => $role
            ]);
    }

视图中,只需打印角色的名称

@foreach( $users_sellers as $user )
  <tr>
    <td align="center" class="hidden-xs">{{ $user->id }}</td>
    <td>{{ $user->name }}</td>
    <td>{{ $user->email }}</td>
    <td>{{ $role['$user->id']['role_name']</td>
  </tr>
@endforeach

注意:

<td>{{ $role['$user->id']['role_name']</td>

此行取决于您从控制器向视图发送$role的方式。它的目的是返回角色的ID数组的名称

希望这会对你有所帮助。