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