我想获取一个学生的文件及其所有数据。
我的表格(我总结了我需要的表格。):
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');
}
// ...
Controller :
// ...
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",
}
]
// ...
我尝试了多种方法,但无法解决我的问题。
最佳答案
您可以将 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;
关于php - 如何使用 laravel eloquent 访问多个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56570435/