【问题标题】:Laravel Get Resource Inside Resource with ID?Laravel 使用 ID 获取资源内部的资源?
【发布时间】:2020-11-19 02:53:54
【问题描述】:

我正在尝试使用 laravel eloquent 获取报告,但偶然发现了一个问题!

报告目标:让所有学生也完成分配的任务以及他们取得的进展。

我有一个控制器设置:

public function show($task) {
    return new TaskStudentProgressStats(Task::findOrFail($task));
}

工作正常,那么我的资源工作流程如下:

任务(组(学生(Progress())))

我得到了所有数据,但进度与任务无关,我怎样才能将任务 ID 传递给进度资源? 或者我可以从父资源中调用一些数据吗?

学生进度关系如下:

public function studentProgress() {
    return $this->hasMany(ProgressStudentTaskUser::class, 'id', 'student_id');
}

【问题讨论】:

  • 类似 $task->with('progress')->students()->get()
  • 你的progress模特关系是什么?
  • @MohamedMelouk 进度模型关系如下:
    public function studentProgress() { return $this->hasMany(ProgressStudentTaskUser::class, 'mis_id', 'mis_id'); }

标签: laravel eloquent resources eloquent-relationship


【解决方案1】:

如果 Task 模型 hasMany students 而学生 hasMany prgress 然后试试这个代码:

public function show($task) {
    return Task::find($task)->students()->with('progress')->get();
}

这应该返回该任务的所有学生并取得进展

请注意,如果您想自定义关系,这将返回每个学生的所有进度,然后使用:

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

【讨论】:

  • 谢谢,我唯一的问题可能是 任务设置得太组而不是个别学生! 然后我在另一个表中存储了哪些学生被分配到哪些组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
相关资源
最近更新 更多