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

如何将数据库取出的JSON数据传递到Blade模板并实现指定渲染效果

解决方案

第一步:修复控制器代码

你现有代码存在两个核心问题:

  1. DB::table('items')->select('gravy')->get() 返回的是包含所有行数据的集合,每个元素是对应一行的stdClass对象,不是gravy字段的JSON字符串,直接传入json_decode会报错
  2. 没有给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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:03