こんにちは、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エラーが発生します。コレクションを使用せずにこれをバイパスする方法はありますか?アイデアは、DBを最大限に活用することです.