我有一个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检索角色。问题是我无法弄清楚辅助函数中的内容?
注意:如果有其他(更好的)方法而不是助手,那对我来说也是有用的。
答案 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数组的名称
希望这会对你有所帮助。