您好我想知道是否可以使用 Laravel 的 Eloquent 通过聚合函数(MAX、MIN、COUNT)对查询结果进行分组/排序。这些型号是:
class School extends Model{
function students(){
return $this -> hasMany(Student::class);
}
}
class Student extends Model{
function school(){
return $this -> belongsTo(School::class);
}
}
经典的一对多关系,我想执行下一个查询:
School::select('school.*', 'MAX(student.score) as best_score') -> join('student', 'student.school_id', '=', 'school.id') -> orderByDesc('best_score') -> toSql()
所以我想列出所有学生成绩最好的学校。Laravel Eloquent 呈现下一个查询:
select `school`.*, `MAX(student`.`score)` as `best_score` from `serije` inner join `student` on `student`.`school_id` = `school`.`id` order by `best_score` desc
所以他呈现MAX(student
为一列并引发 sql 错误,有没有办法在不使用 collections的情况下绕过它,这个想法是充分利用 DB。