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

如何在Laravel Blade模板中读取多层JSON值

如何在Blade中读取嵌套的JSON字段值

嘿,这个问题我碰到过!核心原因是你的content字段存储的是JSON字符串,而不是直接的对象/数组,所以没法直接用->field1访问。下面给你几种简单的解决方法:

方法1:在控制器中提前解析(推荐)

在获取到$employeeDetail之后,把content字段解码成对象或数组,这样模板里用起来更方便:

public function index() {
    $employeeDetail = new EmployeeDetail();
    if (Auth::check()) {
        $id = Auth::user()->id;
        $employeeDetail = DB::table('employee_details')->where('user_id', $id)->first();
        
        // 解析content字段,转成对象(如果要数组就加第二个参数true)
        if ($employeeDetail && !empty($employeeDetail->content)) {
            $employeeDetail->content = json_decode($employeeDetail->content);
        }
        dump($employeeDetail);
    }
    return view('myView', compact('employeeDetail'));
}

之后在Blade模板里就能直接访问了:

{{ $employeeDetail->emp_id }} <!-- 原来的方式依然可用 -->
{{ $employeeDetail->content->field1 }} <!-- 访问嵌套的field1 -->
{{ $employeeDetail->content->field2 }} <!-- 访问嵌套的field2 -->

方法2:直接在Blade模板中解析

如果不想修改控制器,也可以在模板里临时解析:

@if($employeeDetail && !empty($employeeDetail->content))
    @php
        // 解析成对象,或者用json_decode(..., true)转成数组
        $contentData = json_decode($employeeDetail->content);
    @endphp
    <p>Field1: {{ $contentData->field1 }}</p>
    <p>Field2: {{ $contentData->field2 }}</p>
@endif

方法3:用Eloquent访问器(最优雅)

如果你用的是Eloquent模型(EmployeeDetail),可以给模型加一个访问器,让它自动解析content字段,一劳永逸:

// App/EmployeeDetail.php
class EmployeeDetail extends Model
{
    // ...其他代码
    
    // 定义content字段的访问器
    public function getContentAttribute($rawContent)
    {
        // 转成对象,要数组就传true
        return json_decode($rawContent);
    }
}

之后控制器里直接用模型查询就行,不用手动解析:

$employeeDetail = EmployeeDetail::where('user_id', $id)->first();

Blade里还是一样的用法:{{ $employeeDetail->content->field1 }}

注意事项

  • 记得判断content字段是否为空或者无效JSON,避免出现Trying to get property 'field1' of non-object的错误。
  • 如果你的JSON格式可能有问题,可以给json_decode加第三个参数true来处理错误,或者用json_last_error()排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:18:20