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

Laravel关联三张表遇错:访问Users.name时报‘Attempt to read property "name" on null’

问题分析与解决

核心问题1:关联定义未指定正确外键

Laravel关联默认遵循蛇形命名规则,你的Review模型里users()关联方法,框架会自动匹配外键user_id,但数据表实际字段是userId(驼峰命名),必须手动指定外键参数:

修改Review.php中的关联代码:

public function users(){
    return $this->belongsTo(User::class, 'userId');
}

核心问题2:存在无关联用户的评论

报错Attempt to read property "name" on null,说明部分Review的userId字段为null,找不到对应的User记录。需要在视图中做判空处理,避免直接访问null的属性:

修改视图代码:

@foreach($data->reviews as $x)
  {{ $x->users?->name ?? '匿名用户' }}
@endforeach
  • ?->是PHP8+的可选链运算符,避免$x->users为null时报错
  • ?? '匿名用户'用于在无关联用户时显示默认文本

额外优化:移除多余关联

你的FoodAndDrink.php中定义的users()关联是错误的——FoodAndDrinks和Users并没有直接外键关联,你要的是通过Reviews间接关联,直接删掉这段代码:

// 删除该方法
function users(){
    return $this ->hasMany(User::class,'userId');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:45:10