Laravel Blade中如何解析数据库JSON格式related_id为列表
数据库表结构
related_members表
| ID | related_id |
|---|---|
| 1 | ["4","5"] |
| 2 | ["1","3"] |
问题与当前代码
我需要在Laravel Blade视图中将related_id字段的内容渲染为单独的列表项,但当前使用的代码:
@foreach(\App\Models\Member::all()->where('related_id', $member->related_id) as $users ) <li>{{ $users['related_id']}}</li> @endforeach
只会输出整个JSON字符串(比如["4","5"]),而我想要的是:
- 4
- 5
解决方案
你的核心问题是related_id存储的是JSON格式字符串,且当前查询逻辑错误——你不需要查询整个Member集合,只需要解析当前$member的related_id字段即可。
方法1:直接在Blade中解析JSON
先把JSON字符串转成PHP数组,再循环输出:
@php // 将JSON字符串解析为关联数组 $relatedIds = json_decode($member->related_id, true); @endphp <ul> @foreach($relatedIds as $id) <li>{{ $id }}</li> @endforeach </ul>
方法2:模型中添加类型转换(更规范)
在Member模型里设置属性类型转换,让框架自动把JSON字符串转成数组:
// app/Models/Member.php class Member extends Model { protected $casts = [ 'related_id' => 'array', ]; }
设置后,Blade中可以直接用数组循环,代码更简洁:
<ul> @foreach($member->related_id as $id) <li>{{ $id }}</li> @endforeach </ul>
内容的提问来源于stack exchange,提问作者Johnny Kham
相关产品推荐
相关产品推荐

