无法获取加入多个 Eloquent 关系的数据

Posted

技术标签:

【中文标题】无法获取加入多个 Eloquent 关系的数据【英文标题】:Unable to get data on joining Multiple Eloquent Relationships 【发布时间】:2021-12-09 15:57:31 【问题描述】:

我想显示来自Files 表的id,FileNameFilePath 和来自User 表的idname 以及course 表列-id,@ 987654330@ & aboutCourse。但它从filesuser 关系返回null。我该如何解决这个问题?

$course=Course::with(['files:id,FileName,FilePath','user:id,name'])
->select('id','courseDisplayName','aboutCourse')
->where('userId',$request->tutorId)
->get();

课程模型

  public function files()
    
        return $this->belongsTo(Files::class, 'fileId', 'id');
    

    public function user()
    
        return $this->belongsTo(User::class, 'userId', 'id');
    

输出如下:

[
    
        "id": 20,
        "courseDisplayName": "asasasb",
        "aboutCourse": null,
        "files": null,
        "user": null
    ,
    
        "id": 14,
        "courseDisplayName": "yuu",
        "aboutCourse": "kljkl",
        "files": null,
        "user": null
    
]

【问题讨论】:

【参考方案1】:

您还必须选择外键 fileIduserId 才能使用 filesuser 的关系,因此查询将类似于

$course=Course::with(['files:id,FileName,FilePath','user:id,name'])
->select('id','courseDisplayName','aboutCourse', 'userId', 'fileId')
->where('userId',$request->tutorId)
->get();

【讨论】:

以上是关于无法获取加入多个 Eloquent 关系的数据的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Laravel Eloquent 关系中获取数据

无法在 Controller Laravel belongsToMany 关系中获取正确的数据 - Laravel / Eloquent [关闭]

加入 Eloquent 打破关系?

我如何加入 Eloquent: 关系?

Laravel Eloquent 根据数据透视表字段条件获取多对多关系

功能无法加载有很多关系数据 laravel Model Eloquent