Красноречивый запрос, чтобы получить самое высокое и второе самое высокое значение в базе данных - PullRequest
0 голосов
/ 14 марта 2019

This is the image of my dattabase

У меня проблема с Laravel Eloquent, чтобы получить имя субъекта с самым высоким значением и вторым по величине значением из 'student_number', где группа субъектов = 'E1».Это то, что я пробовал, но он содержит ошибку «max (): когда задан только один параметр, это должен быть массив», и я не знаю, как получить 2-е наибольшее значение «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'));
}

1 Ответ

0 голосов
/ 14 марта 2019
FinalyearSubject::where('subject_group', 'E1')
->orderBy('student_number', 'DESC')
->limit(2)
->get()

Объяснение:

  • Добавить фильтры
  • Упорядочить их по ученику по убыванию
  • Взять верх 2
  • get()результат

В тот момент, когда вы делаете FinalyearSubject::get(), запрос уже выполнен.get() возвращает объект Collection (больше похожий на обогащенный массив).Все, что вы связываете впоследствии, рассчитывается с использованием утилит Laravel's Collection.->get() обычно должен быть последним в вашем вызове, чтобы вы могли выполнять как можно больше работы в SQL.

...