雄辩的查询来获取数据库中的最高和第二高的值

时间:2019-03-14 18:02:13

标签: laravel-5 eloquent laravel-5.5

This is the image of my dattabase

Laravel Eloquent遇到问题,无法从“ student_number”(主题组=“ E1”)中获取具有最高值和第二最高值的主题名称。 这是我尝试过的操作,但其中包含错误“ max():仅给出一个参数时,它必须是数组”,我不知道如何获得“ student_number”的第二高值。

public function electiveGroup(){
    $E1 = FinalyearSubject::get()
        ->where('subject_group','=','E1')
        ->orWhere('student_number','=',max('student_number'));

    return view ('admin.elective')->with(compact('E1'));
}

2 个答案:

答案 0 :(得分:0)

FinalyearSubject::where('subject_group', 'E1')
->orderBy('student_number', 'DESC')
->limit(2)
->get()

说明:

  • 添加过滤器
  • 按学生编号降序排列
  • 获得前2名
  • get()结果

您正在做FinalyearSubject::get()的那一刻,查询已经完成。 get()返回一个Collection对象(更像是一个丰富的数组)。之后,您链接的所有内容都是使用Laravel的Collection实用程序计算的。 ->get()通常应该是调用中的最后一件事,以便您可以在SQL中完成尽可能多的工作。

答案 1 :(得分:0)

所以,问题是您要获取全部的最大值,第二要的最大值 组='E1'。

总数最多

FinalyearSubject::where('subject_group','E1')
->max('student_number');

“ E1”的第二个最大值

FinalyearSubject::where('subject_group','E1')
->OrderBy('student_number','desc')
->offset(1)
->limit(1)
->get();