如何根据学生设计结果

问题描述

这是我的第一篇文章。我的 Laravel 项目遇到了麻烦 这是我的数据表。

enter image description here

我有像 1,2,3 这样的学生 ID。每个学生都有多个结果,然后是课程。 我需要这样安排他们

enter image description here

我尝试了 groupby 并得到了这个结果

enter image description here

有没有什么办法可以根据学生来安排。 谢谢

代码:控制器:

public function notification()
{
    $auth_id = Auth::user()->id;
    $teacher = Teacher::where('user_id',$auth_id)->first();
    $teacher_id = ($teacher->id);
    $batch = Batch::where('teacher_id',$teacher_id)->first();

    $courses = AssignCourses::with('course')
        ->where('semester_id',$batch->semester_id)
        ->get();

    $current_semester_results = Result::with(['student','course'])
        ->where('semester_id',$batch->semester_id)
        ->get()
        ->groupBy('student.id');

    $batch_students = Student::with('result')
        ->where('semester_id',$batch->semester_id)
        ->get();

    return view('users.teacher.my_batch.notification',compact(['current_semester_results','courses','batch_students']));
}

解决方法

只需使用 $batch_students 并在您的 PHP 代码上应用任何聚合,这样做会更容易。

$batch_students = Student::with('result')
    ->where('semester_id',$batch->semester_id)
    ->get();

$batch_students_grouped = $batch_students->groupBy('result.student_id');

注意:我无法测试,因为我没有表,所以您可能需要更改最后一行代码中的 student_id 嵌套/访问索引。 >

您可以打印出您的 $batch_students_grouped->all() 并查看您应该如何迭代您的数据并将其显示在前端。