如何在Laravel中获得职位(排名)

时间:2018-11-20 16:09:00

标签: mysql laravel-5 eloquent

我正在构建报告卡应用程序。我对学生报告表的看法是这样的:

my view 主题CA 1 CA 2 CA平均考试总百分比主题位置 数学80 70 75.0000 56 65.50000000 1st 英语70 45 57.5000 100 78.75000000第三名
生物学89 23 56.0000 90 73.00000000第四位

在数据库的结果表中,我有列:student_id,studentClass,CA1,CA2,考试和其他要点。我没有总百分比,“ CA平均值”或“总体百分比”列也没有。总百分比由总百分比/主题数得出(在上面的示例中:72.416666666667)。您可以在下面的控制器中找到查询生成器,从而动态计算CA平均百分比和总百分比。

我需要计算 1.职位等级,例如初级1A。根据总体百分比为每个学生分配一个职位。例如第一,第二,第三等。当然,如果有平局,则下一个位置将被跳过。 2.跨部门的职位,例如,Elementary可以拥有1A,1B,1C等基础教育。与所有Elementary(1A,1B,1C等)中的所有学生相比,我需要按总体百分比为学生分配职位。 3.学科排名:该分数是根据每个学科的学生与其他班级相同的学生(例如,小学1A)相比较得出的总百分比来计算的。这是我上面视图中的最后一列。我也可以找到解决方法。

我正在寻找解决方案。到目前为止,我所看到的是使用DB表上的一列来计算Position(rank)的解决方案。在我的情况下,我没有此类列,因为我使用了QB进行实时计算。我确实尝试通过至少在插入过程中计算CA平均数和总百分比来实现该方法,但是出现“不支持的操作数”错误。

我的控制器:

公共职能Studentresultsheet(请求$ request){

        $stclass = $request->get('stclass');
        $myclass = Stclass::find($request->get('stclass'))->name;
        $studentId = $request->get('studentId');
        $studentname = Student::find($request->get('studentId'))->surname;

        $session= $request->get('sessionnow');
        $term = $request->get('term');

        $myids = Stclass::find($stclass)->students;

        // $dodo = DB::table('results')
        //           -> where('studentClass', $stclass)->where('session', $session)->where('term', $term)
        //           ->selectRaw('results.studentId')->distinct()->get();







         $resultpercent = DB::table('results')
                  -> where('studentClass', $stclass)->where('session', $session)->where('term', $term)->where('studentId', $studentId)
                  ->selectRaw("SUM((results.exam + (results.test1 + results.test2)/2)/2)/(COUNT(results.subject)) as overallpercent")->get();

                   $dodo = DB::table('results')
                  -> where('studentClass', $stclass)->where('session', $session)->where('term', $term)
                  ->selectRaw('results.studentId')->get();



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

      return view('admin.results.studentresultsheet', compact('results', 'myclass', 'studentname','resultpercent', 'countsubjects'));

}

谢谢。

0 个答案:

没有答案