我有一个Laravel应用程序。我使用this包作为角色和权限。它效果很好。Laravel在用户列表中的作用
我现在想显示一个所有用户及其角色的表格。目前我正在通过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以下代码(或类似):在我看来,包含单个的foreach载明下列
$users = User::all();
:
@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
在上面的伪代码,我已经定义了一个帮助器,它根据用户标识检索角色。问题是我无法弄清楚在辅助函数中放什么东西?
注意:如果还有其他(更好的)方法不是助手,那也适用于我。
我也试过这个,但我总是得到“调用未定义的方法Illuminate \ Database \ Query \ Builder :: all()” – wiwa1978
试试get:'$ users = User :: with('roles') - >的get();'。 – TheFallen
这工作。在视图中,我正在执行以下操作:$ user-> roles [0] - > name来输出角色名称。这工作。但是如果有多个角色呢?那么我应该迭代它们还是有更好的方法来显示所有角色? – wiwa1978