You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 6 index.blade 如何展示有角色的用户且表格仅显示角色名称

解决方案

问题原因

你直接输出$user->roles实际是输出用户关联的角色集合序列化后的JSON内容,因此会返回所有角色字段和中间表pivot信息。

步骤1:优化控制器查询(可选,推荐)

原查询写法可以替换为更高效的Eloquent查询,同时避免N+1性能问题:
首先确保你的app/User.php模型中已定义roles多对多关联:

public function roles()
{
    return $this->belongsToMany(Role::class);
}

修改UserController中原查询代码:

// whereHas 筛选仅拥有角色的用户,with预加载角色关联避免重复查询
$users = User::whereHas('roles')->with('roles')->get();
return view('admin.index', compact('users'));

步骤2:修改Blade模板的角色列输出

将index.blade.php中原来的角色列代码:

<td>{{ $user->roles }}</td>

替换为:

<td>{{ $user->roles->pluck('name')->implode(', ') }}</td>

说明:pluck('name')会从角色集合中提取所有角色名称,implode(', ')会将多个角色名称用逗号拼接为字符串展示,单个角色时直接输出名称。

内容的提问来源于stack exchange,提问作者devTM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:06:03