按多个字段对Laravel(4.2)集合进行排序

时间:2015-08-13 10:23:18

标签: php sorting laravel-4

如何通过多个字段对Laravel Collection进行排序?

想象一下,我有一个“考试”模型,与“患者”有关,有日期和分数字段。

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

现在,我想根据患者姓名和考试日期对此馆藏进行排序。

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

这不起作用,它会忽略第一个sortBy。

我怎样才能做到这一点?

非常感谢! :)

2 个答案:

答案 0 :(得分:1)

试试这个:希望它可以帮助你。

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

答案 1 :(得分:1)

你必须加入患者。

类似的东西:

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