Eloquent 查询以获取数据库中的最高值和第二高值

Eloquent query to get Highest and 2nd highest value in database

我在 Laravel Eloquent 中遇到问题,无法从 'student_number' 中获取具有最高值和第二高值的主题名称,其中主题组 = 'E1' . 这是我尝试过的方法,但它包含一个错误 "max(): When only one parameter is given, it must be an array",我不知道如何获得 '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'));
}
FinalyearSubject::where('subject_group', 'E1')
->orderBy('student_number', 'DESC')
->limit(2)
->get()

解释:

  • 添加过滤器
  • 按 student_number 降序排列
  • 前2名
  • get()结果

在您的示例中,在您执行 FinalyearSubject::get() 的那一刻,查询就已经完成。 get() returns 一个 Collection 对象(更像是一个丰富的数组)。您之后链接的所有内容都是使用 Laravel 的收集实用程序计算的。 ->get() 通常应该是您通话中的最后一件事,这样您就可以在 SQL 中完成尽可能多的工作。

So, Question is you want maximum of all and 2nd maximum of subject group = 'E1'.

最大的

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

第 2 个最大值,共 'E1'

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