Laravel中如何在foreach嵌套循环遍历数据库JSON数据
Laravel嵌套遍历JSON字段问题解决
问题根源
你存储的JSON存在重复键问题:JSON对象不允许出现相同的key,解析后只会保留最后一个"details"值,这直接导致你遍历不到所有内容。另外,Laravel默认不会自动把JSON字段转成可遍历的数组/集合,也会影响循环效果。
解决步骤
1. 修复数据库中的JSON结构
把重复的details键改成数组形式,正确的JSON应该是:
{"details": ["Up to 5 Groups / Month", "Up to 30 CSV File Importing / Month", "Up to 5 SMTP Config", "Up to 5 Email Template Can Make and Edit", "Up to 30 Writer Call / Month", "24x7 Support"]}
如果是批量修改,可以用数据库更新语句处理,确保所有旧数据都转成这种数组结构。
2. 在模型中配置字段转换
打开你的TABLE_1对应的数据模型类,添加$casts属性,让Laravel自动把FSLS字段解析为数组:
protected $casts = [ 'FSLS' => 'array', ];
3. 修改视图中的循环代码
现在$lists->FSLS是包含details数组的关联数组,直接遍历details即可:
@foreach ($TABLE_1 as $lists) Name: {{ $lists->name }} @foreach($lists->FSLS['details'] as $detail) - {{ $detail }} @endforeach @endforeach
补充说明
如果暂时无法修改数据库的JSON结构(不推荐),可以在取出数据时手动处理,但这种方式不稳定,因为重复键的解析结果依赖于JSON解析器,建议优先修复JSON结构。
内容的提问来源于stack exchange,提问作者Md Sharif Uzzaman Rubel
相关产品推荐
相关产品推荐

