Сортировать Laravel (4.2) Сбор по нескольким полям

1

Как я могу сортировать коллекцию Laravel несколькими полями?

Представьте, что у меня есть модель "Экзамены", имеющая отношение к "Пациентам", с полями даты и оценки.

$exams = Exam::all();
$exams->load('Patient');

Теперь я хочу сортировать эту коллекцию по имени пациента, а затем по дате экзамена.

$exams = $exams->sortBy('patient.name');
$exams = $exams->sortBy('date', 'desc');

Это не работает, оно игнорирует первый sortBy.

Как я могу это достичь?

Большое спасибо! :)

  • 1
    На вашей первой строке $exams = Exam::all(); Вы уже запрашиваете и загружаете все экзамены. Затем во второй строке $exams->load('Patient'); Вы увлажняете отношения Patient со всеми вашими экзаменами ... Слишком поздно пытаться что-то сортировать.
Теги:
sorting
laravel-4

2 ответа

1

Вы должны присоединиться к пациентам.

Что-то вроде:

$exams = Exam::newQuery()
    ->join('patients', 'exams.patient_id', '=', 'patients.id')
    ->orderBy('patients.date', 'DESC')
    ->get()
;
1

Попробуйте это: Надеюсь, это поможет вам.

   $exams = Exam::with(
        ['patient' => function($query) {
            $query->orderBy('name')
            $query->orderBy('date','desc)
          }
        ])
    )->get();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню