[英]I want to show roles related to users in selection option using laravel
[英]Laravel 6 in index blade how can I show only users who have roles and their roles in the table
在 index.blade.php 中,我编写了这些代码来显示具有角色的用户
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Roles</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>{{ $user->roles }}</td>
<td>Show</td>
</tr>
@endforeach
</tbody>
我在 UserController 中编写了这些代码,
$userId = \DB::table('role_user')->get()->pluck('user_id');
$users = User::find($userId);
return view('admin.index', compact('users'));
我在网站上得到了这些:
[{"id":1,"name":"User Administrator","description":null,"created_at":"2021-11-23 03:06:49","updated_at":"2021-11-23 03:06:49","pivot":{"user_id":1,"role_id":1}}]
[{"id":2,"name":"Moderator","description":null,"created_at":"2021-11-23 03:06:49","updated_at":"2021-11-23 03:06:49","pivot":{"user_id":2,"role_id":2}}]
如何只显示表角色列中的名称?
调用user->roles
时,您很可能会调用用户 model 上的关系。 这意味着您要返回一个集合。 If you place a collection in curly braces in blade ( {{ $user->roles }}
), Laravel automatically calls toArray()
on each model, and a json_encode
on the result, which results in the JSON strings you end up seeing.
但是,您只需要名称,因此最好获取这些值并将它们转换为字符串。 这样做的一种选择是拔取name
,然后将结果内爆:
implode(', ', $user->roles()->pluck('name')->toArray());
您必须在pluck()
结果上调用toArray()
,否则您将拥有一个集合而不是一个数组,而implode
无法使用。
如果用户已登录并且要显示他的角色,您可以在刀片中使用它:
{{ Auth::user()->roles->pluck('name') }}
或者你想显示另一个用户的 rools,那么你可以这样做:
// in Controller fetch the user:
$user = User::find(42);
// in your Blade:
{{ $user->roles->pluck('name') }}
在这种情况下,您可以使用多种方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.