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

我想获取包含所有数据的学生文件。


我的表格(我总结了我需要的表格。):



    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",

            }

        ]

      // ...


我已经尝试了多种方法,但无法解决我的问题。


有只小跳蛙
浏览 228回答 1
1回答

aluckdog

您可以将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;
打开App,查看更多内容
随时随地看视频慕课网APP