Привет, мне было интересно, можно ли сгруппировать / отсортировать результаты запроса по агрегатным функциям (MAX, MIN, COUNT) с помощью Eloquent Laravel.Модели:
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. Есть ли способ обойти этот без использованияколлекции , идея состоит в том, чтобы максимально использовать БД.