php - Laravel Eloquent: How to order results of related models? - Stack Overflow

PHOTO EMBED

Wed Nov 23 2022 15:44:29 GMT+0000 (Coordinated Universal Time)

Saved by @WMOH #php

// when eager loading
$school = School::with(['students' => function ($q) {
  $q->orderBy('whateverField', 'asc/desc');
}])->find($schoolId);

// when lazy loading
$school = School::find($schoolId);
$school->load(['students' => function ($q) {
  $q->orderBy('whateverField', 'asc/desc');
}]);

// or on the collection
$school = School::find($schoolId);
// asc
$school->students->sortBy('whateverProperty');
// desc
$school->students->sortByDesc('whateverProperty');


// or querying students directly
$students = Student::whereHas('school', function ($q) use ($schoolId) {
  $q->where('id', $schoolId);
})->orderBy('whateverField')->get();
content_copyCOPY

https://stackoverflow.com/questions/25700529/laravel-eloquent-how-to-order-results-of-related-models