在一个网页中生成多个学生报告表

velaa5lx  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(273)

我正在建立一个学生管理应用程序。我被困在看课堂报告。我可以显示每个学生的个人报告(分数,百分比,个人信息,精神运动领域等)。但是我需要在一个网页上显示一个班级每个学生的所有报告,中间有分页符。所以我们会在很长的网页上显示学生1的所有分数和信息,学生2的所有分数和信息等。我在db上的results表有studentid和studentclass列来区分事物。我觉得我应该用forloop,但我不知道该怎么做。下面是我的控制器:

public function viewclassresults(Request $request){

   $term = $request->get('term');
   if ($term ==1) {
       $termended = "First";
   }
   $session = $request->get('session');
   $sessionnow = Session::where('id', $session)->first()->name; 
   $classname = $request->classname;
   $class_id = $request->class_id;
   $teachersignature = Stclass::where('id', $class_id)->first()->teachersignature;
   $teachername = Stclass::find($class_id)->teachers()->first()->fullName;

   $setting = Setting::all()->first(); 

   $grades = DB::table('grades')->get();
   $comments = Comment::all();

      $results = DB::table('results')
                    ->where('studentClass', $class_id)->where('session', $session)->where('term', $term)->whereNull('deleted_at')
                    ->selectRaw('results.*, (results.test1 + results.test2)/2 as cav, (results.exam + (results.test1 + results.test2)/2)/2 as totalmark, results.studentId as classstudents')->get();

       $rating = DB::table('ratings')->where('term', $term)->where('session', $session)->first();

        if($results->isEmpty()){

           return "No Result";
          // 
        } else{
            return view('teacher.results.viewclassresults', compact('subjects', 'studentname', 'regNumber', 'studentClass', 'studentId', 'term', 'session', 'results', 'student', 'setting', 'sessionnow', 'classname', 'termended', 'grades', 'comments', 'rating', 'teachername', 'resultpercent', 'resultpercentclass', 'teachersignature', 'classstudents'));
          // 
      }

}

真正显示个人结果的是$results。请注意,resultid(id)是结果表中唯一的主键。下面是我表格的一部分:
我的结果表

bq3bfh9z

bq3bfh9z1#

我正在使用强制加载。

$student = Student::with(['results'=> function($q1) use ($term, $studentId) {
    $q1->where('term', $term)
    ->where('studentId', $studentId)
    ->whereNull('deleted_at')
    ->selectRaw('results.*, (results.test1 + results.test2) as cav, results.exam + results.test1 + results.test2 as totalmark');

},'ratings' => function($q2) use ($term, $session){
    $q2->where('term', $term)
    ->where('session', $session)
    ->first();
}])->get();

return view('view.template',compact('student'));

我看到你有很多结果。你可以在你的学生模型上添加一个方法,然后加载不同类型的结果。我不知道你们是什么关系,但基本上你们只是在上面保持联系。
不需要控制器中的条件语句。您可以在视图中执行所有这些操作,并删除不同的部分。
这个景色看起来很像这样

@foreach($student as $student)
    @if($student->result->empty())
        <h1>No student result.</h1>
    @else
        @foreach($student->result as $result)
            //Get student result
        @endforeach
    @endif
@endforeach

此代码未经测试。希望有帮助。

相关问题