为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用laravel eloquent访问多个外键

如何使用laravel eloquent访问多个外键

PHP
有只小跳蛙 2021-08-21 10:20:25
我想获取包含所有数据的学生文件。我的表格(我总结了我需要的表格。):    students     - id     - name     student_files     - id     - student_id     - type_file_id     - file_url    type_files     - id     - name型号:    // ...    class Student extends Authenticatable{    // ...     public function files()     {        return $this->hasMany('App\StudentFiles');     }    // ...控制器:    // ...    class Student extends Authenticatable{     public function getFiles(Request $request)     {        $user = Student::Find($request->user()->id)->load('files');     }    // ...我试过类似的东西......不起作用。     public function files()     {        return $this->hasMany('App\StudentFiles')->hasOne('App\TypeFiles');     }请求结果:// ...    "files": [        {            "id": 1,            "student_id": 1,            "type_file_id": 1,            "file_url": "example.jpg",        }    ]// ...我想要的结果 // ...       "files": [            {                "id": 1,                "student_id": 1,                "type_file_id": 1,                "name": "Profile",                "file_url": "example.jpg",            }        ]      // ...我已经尝试了多种方法,但无法解决我的问题。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以将typeFile关系添加到 StudentFile:


class StudentFiles extends Model {

  public function typeFile()

  {

     return $this->hasOne('App\TypeFile', 'type_file_id');

  }

}

然后使用急切加载访问它:


$user = Student::with('files', 'files.typeFile')->find($request->user()->id);

$typeFileName = $user->files->typeFile->name;


查看完整回答
反对 回复 2021-08-21
  • 1 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信