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

Laravel报错:Attempt to read property "title" on null 排查求助

Laravel详情页报错:Attempt to read property "title" on null 排查方案

核心原因

报错本质是视图中调用$blog->title时,$blog为null,说明控制器未从数据库查询到对应ID的博客数据。

具体排查与解决步骤

1. 处理查询无数据的情况

当前控制器用first()查询,当数据库不存在对应ID的记录时,会返回null并传递到视图,触发报错。将查询语句改为firstOrFail(),找不到数据时Laravel自动返回404页面,避免空值流入视图:

public function show($id)
{
    $blog = Blog::where('id',$id)->firstOrFail();

    return view('front.detail',compact('blog'));
}

2. 优化路由与控制器参数匹配

使用Laravel路由模型绑定简化代码,同时自动处理无数据场景:

  • 控制器方法直接接收Blog模型实例作为参数,无需手动查询:
public function show(Blog $blog)
{
    return view('front.detail',compact('blog'));
}
  • 现有路由无需修改(resource路由的show方法默认参数为{blog},与模型名单数一致,Laravel会自动根据ID匹配对应模型)。

3. 验证请求URL与参数

确认访问详情页的URL格式正确,应为/{lang}/blogs/{id}(例如/en/blogs/1),确保{id}是数据库中存在的博客ID。若URL参数错误(如传递非数字或不存在的ID),会直接导致查询无结果。

4. 视图层增加容错处理(可选)

若需要在无数据时显示友好提示而非404,可在视图中添加判断:

<li>
    @if($blog)
        <h2><a href="">{{$blog->title}}</a></h2>
        <p>{!! $blog->text !!}</p>
    @else
        <p>该博客不存在或已被删除</p>
    @endif
</li>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:41:26