【问题标题】:How to design result according students如何根据学生设计结果
【发布时间】:2021-07-15 15:06:03
【问题描述】:

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

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

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

有没有办法根据学生来安排。 谢谢你

代码:控制器:

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']));
}

【问题讨论】:

  • 请您添加您在分组中使用的代码(复制和粘贴不是截图)。
  • 我已经添加了控制器的代码。
  • 我不确定 groupby 是否真的需要这个目的。
  • 考虑到您正在加载他们的结果关系,为什么不直接使用$batch_students
  • 是的,我可以,但课程是动态的,每个学生都有不同的课程。在前端课程 @foreach($courses as $course) {{ $course->course->course_code }} @endforeach 我可以得到动态课程但无法安排结果

标签: database laravel eloquent relation


【解决方案1】:

只需使用 $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(),看看你应该如何迭代你的数据并在前端显示它。

【讨论】:

  • in dd($batch_students_grouped); Illuminate\Database\Eloquent\Collection {#1382 ▼ #items: array:1 [▼ "" => Illuminate\Database\Eloquent\Collection {#1407 ▼ #items: array:3 [▼ 0 => App\Models\Student {#1394 ▶} 1 => 应用\模型\学生 {#1404 ▶} 2 => 应用\模型\学生 {#1395 ▶} ] } ] }
  • 在前端 @foreach($batch_students as $batch_student) {{$i++}} {{ $batch_student->registration_number }} {{ $batch_student->roll_number }} {{ $batch_student->firstname }} 它的获取学生详细信息,但我如何显示课程分数。因为课程分数是动态的
  • @foreach($courses as $course) {{ $course->course->course_code }} @endforeach 这是课程表标题。
  • @joydhar 你能运行dd($batch_students_grouped->toArray()); 并给出结果吗,因为这很难理解,抱歉:'(
  • 是的,它的工作。我在前端使用了一个计数变量。一切都和预期的一样好。非常感谢。
猜你喜欢
相关资源
最近更新 更多
热门标签