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();
我在 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();