Как я могу сортировать коллекцию Laravel несколькими полями?
Представьте, что у меня есть модель "Экзамены", имеющая отношение к "Пациентам", с полями даты и оценки.
$exams = Exam::all();
$exams->load('Patient');
Теперь я хочу сортировать эту коллекцию по имени пациента, а затем по дате экзамена.
$exams = $exams->sortBy('patient.name');
$exams = $exams->sortBy('date', 'desc');
Это не работает, оно игнорирует первый sortBy.
Как я могу это достичь?
Большое спасибо! :)
Вы должны присоединиться к пациентам.
Что-то вроде:
$exams = Exam::newQuery()
->join('patients', 'exams.patient_id', '=', 'patients.id')
->orderBy('patients.date', 'DESC')
->get()
;
Попробуйте это: Надеюсь, это поможет вам.
$exams = Exam::with(
['patient' => function($query) {
$query->orderBy('name')
$query->orderBy('date','desc)
}
])
)->get();
$exams = Exam::all();
Вы уже запрашиваете и загружаете все экзамены. Затем во второй строке$exams->load('Patient');
Вы увлажняете отношенияPatient
со всеми вашими экзаменами ... Слишком поздно пытаться что-то сортировать.