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

Laravel 9关联模型报错:Attempt to read property "name" on null 求助

解决Laravel中Tier关联User时读取name属性为null的问题

问题背景

我拥有User和Tier两个模型,业务规则为:一个User可关联多个Tier,一个Tier仅属于单个User。

模型代码

User模型

public function tiers(){
    return $this->hasMany(Tier::class);
}

Tier模型

public function user(){
    return $this->belongsTo(User::class,"user_id");
}

当尝试通过以下方式获取Tier关联的User名称时:

{{$tiers->user->name}}

出现错误:

Attempt to read property "name" on null

解决思路

  • 检查数据有效性:确认对应Tier记录的user_id字段是否存在有效值,且该值关联的User记录真实存在。如果user_id为null或关联的User已被删除,就会触发此错误。
  • 使用可选链避免报错:在Blade模板中用?->运算符处理null情况,写法改为:
    {{$tiers->user?->name}}
    
    这样当user为null时,不会抛出错误,而是返回空值。
  • 预加载关联模型:如果查询Tier时未预加载user关联,可能出现关联未加载的情况。查询时通过with('user')预加载关联:
    $tiers = Tier::with('user')->get();
    
  • 设置关联默认模型(可选):在belongsTo关联中配置默认模型,避免返回null:
    public function user(){
        return $this->belongsTo(User::class,"user_id")->withDefault([
            'name' => '未知用户'
        ]);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:16:18