如何通过多个字段对Laravel Collection进行排序?
想象一下,我有一个“考试”模型,与“患者”有关,有日期和分数字段。
$exams = Exam::all();
$exams->load('Patient');
现在,我想根据患者姓名和考试日期对此馆藏进行排序。
$exams = $exams->sortBy('patient.name');
$exams = $exams->sortBy('date', 'desc');
这不起作用,它会忽略第一个sortBy。
我怎样才能做到这一点?
非常感谢! :)
答案 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()
;