如何将数据库取出的JSON数据传递到Blade模板并实现指定渲染效果
解决方案
第一步:修复控制器代码
你现有代码存在两个核心问题:
DB::table('items')->select('gravy')->get()返回的是包含所有行数据的集合,每个元素是对应一行的stdClass对象,不是gravy字段的JSON字符串,直接传入json_decode会报错- 没有给
json_decode加第二个参数true,默认会返回stdClass对象而非数组,不便于前端遍历
场景1:仅需获取单条记录的gravy字段值
// 可根据实际需求加where条件筛选目标记录 $gravyStr = DB::table('items')->value('gravy'); $gravies = json_decode($gravyStr, true); return view('welcome', [ 'gravies' => $gravies ]);
场景2:需要获取所有记录的gravy字段值合并展示
$gravies = DB::table('items') ->pluck('gravy') ->map(fn($gravyStr) => json_decode($gravyStr, true)) ->flatten() // 将多个数组合并为一维数组 ->toArray(); return view('welcome', [ 'gravies' => $gravies ]);
第二步:前端Blade模板渲染
在welcome.blade.php中遍历数组渲染标签即可实现示例效果:
<style> .tag { display: inline-block; padding: 2px 8px; margin-right: 6px; border-radius: 4px; background: #e9ecef; font-size: 14px; } </style> <div class="gravy-container"> @foreach($gravies as $item) <span class="tag">{{ $item }}</span> @endforeach </div>
内容的提问来源于stack exchange,提问作者Amir Adamov
相关产品推荐
相关产品推荐

