Laravel使用Eloquent多关联预加载查询时files和user关联返回null如何修复
问题修复方案
问题根源
Laravel Eloquent 执行with预加载关联时,需要主表(此处为Course表)提供关联对应的外键值,才能匹配到关联表的对应记录。你的查询中select方法仅选择了id、courseDisplayName、aboutCourse三个字段,遗漏了files关联需要的外键fileId,以及user关联需要的外键userId,导致关联查询无法匹配到数据,最终返回null。
修复代码
只需要在select参数中补充两个关联必需的外键字段即可:
$course=Course::with(['files:id,FileName,FilePath','user:id,name']) ->select('id','courseDisplayName','aboutCourse', 'fileId', 'userId') // 新增关联所需的外键字段 ->where('userId',$request->tutorId) ->get();
补充注意事项
- 预加载关联并指定关联表字段时,必须包含关联表的主键(你当前写法中关联表已带上
id字段,符合要求) - 主表查询必须包含对应关联的外键字段,否则所有belongsTo类型的关联都会返回null
内容的提问来源于stack exchange,提问作者user17189691
相关产品推荐
相关产品推荐

