我想获取所有数据的学生档案。
我的表格(我汇总了所需的表格。):
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",
}
]
// ...
我已经尝试了几种方法,但是我无法解决问题。
答案 0 :(得分:1)
您可以将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;