Laravel 获取带 ID 的资源内部资源?
Laravel Get Resource Inside Resource with ID?
我正在尝试使用 laravel eloquent 获取报告,但偶然发现了一个问题!
报告目标:让所有学生也得到分配的任务和他们取得的进步。
我有一个控制器设置:
public function show($task) {
return new TaskStudentProgressStats(Task::findOrFail($task));
}
工作正常,那么我的资源工作流程如下:
Task(Groups(Students(Progress())))
我得到了所有数据,但进度与任务无关,我怎样才能将任务 ID 传递给进度资源?
或者我可以从父资源中调用一些数据吗?
学生进度关系如下:
public function studentProgress() {
return $this->hasMany(ProgressStudentTaskUser::class, 'id', 'student_id');
}
如果 Task
模型有许多 students
并且学生有许多 prgress
然后试试这个代码:
public function show($task) {
return Task::find($task)->students()->with('progress')->get();
}
这应该 return 所有完成此任务的学生都有进步
请注意,这将 return 每个学生的所有进度,如果您想自定义关系,请使用:
public function show($task) {
return Task::find($task)->students()->with([ 'progress' => function($q){
$q->where('field', 'value');
} ])->get();
}
在您将使用的视图中调用它:
@foreach ($students as $student)
<div>{{ $student->name }} - {{ $student->progress->name }}</div>
@endforeach
我正在尝试使用 laravel eloquent 获取报告,但偶然发现了一个问题!
报告目标:让所有学生也得到分配的任务和他们取得的进步。
我有一个控制器设置:
public function show($task) {
return new TaskStudentProgressStats(Task::findOrFail($task));
}
工作正常,那么我的资源工作流程如下:
Task(Groups(Students(Progress())))
我得到了所有数据,但进度与任务无关,我怎样才能将任务 ID 传递给进度资源? 或者我可以从父资源中调用一些数据吗?
学生进度关系如下:
public function studentProgress() {
return $this->hasMany(ProgressStudentTaskUser::class, 'id', 'student_id');
}
如果 Task
模型有许多 students
并且学生有许多 prgress
然后试试这个代码:
public function show($task) {
return Task::find($task)->students()->with('progress')->get();
}
这应该 return 所有完成此任务的学生都有进步
请注意,这将 return 每个学生的所有进度,如果您想自定义关系,请使用:
public function show($task) {
return Task::find($task)->students()->with([ 'progress' => function($q){
$q->where('field', 'value');
} ])->get();
}
在您将使用的视图中调用它:
@foreach ($students as $student)
<div>{{ $student->name }} - {{ $student->progress->name }}</div>
@endforeach