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

Laravel如何从menu-permissions表的对象数组字段中仅展示menuName列表

解决方案:在视图中展示menuIds中的menuName列表

由于menu-permissions表的menuIds字段存储的是JSON格式数据,需要先解析为数组后,才能提取其中的menuName字段进行列表展示,以下是两种实现方式:

方法一:视图中直接解析JSON

在你的Blade视图文件master/dashboard.blade.php中,通过json_decode解析JSON数据,再遍历提取menuName:

<ul>
    @foreach($menuPermissions as $permission)
        {{-- 将JSON字符串解析为关联数组 --}}
        @php
            $menuItems = json_decode($permission->menuIds, true);
        @endphp
        @foreach($menuItems as $item)
            <li>{{ $item['menuName'] }}</li>
        @endforeach
    @endforeach
</ul>

方法二:模型中添加访问器(推荐,复用性更高)

在MenuPermission模型中添加访问器,自动将menuIds字段的JSON数据解析为数组,后续在视图中可直接使用:

// app/Models/MenuPermission.php
class MenuPermission extends Model
{
    // 其他模型代码...

    // 定义访问器,自动解析menuIds字段
    public function getMenuIdsAttribute($value)
    {
        return json_decode($value, true);
    }
}

修改模型后,视图代码可以简化为:

<ul>
    @foreach($menuPermissions as $permission)
        @foreach($permission->menuIds as $item)
            <li>{{ $item['menuName'] }}</li>
        @endforeach
    @endforeach
</ul>

注意事项

你提供的JSON数据存在语法错误:{"id":4,"menuName":"Geoffrey","code":pr"}中pr未加双引号,正确格式应为"pr",请确保数据库中存储的JSON格式是合法的,否则json_decode会解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:50:40