В Laravel для сортировки записей по связанной модели можно использовать метод orderBy
вместе с именем поля из связанной модели.
Допустим, у нас есть модель Post
, которая имеет отношение один-ко-многим с моделью Comment
, где каждый пост может иметь несколько комментариев. Мы хотим отсортировать посты по количеству комментариев.
Сначала определим отношение между моделями Post
и Comment
в модели Post
с помощью метода hasMany
:
class Post extends Model { public function comments() { return $this->hasMany(Comment::class); } }
Теперь мы можем использовать связанную модель Comment
в методе orderBy
для сортировки записей по количеству комментариев. Например, если мы хотим сортировать записи постов в порядке убывания количества комментариев, мы можем использовать следующий код:
$posts = Post::orderByDesc(Comment::count('id'))->get();
Здесь мы использовали метод orderByDesc
для сортировки по убыванию количества комментариев, а метод count
с аргументом 'id'
для подсчета количества комментариев для каждого поста. Затем мы используем метод get
для получения отсортированного списка постов.
Таким образом, мы можем легко сортировать записи по связанной модели в Laravel, используя метод orderBy
и имя поля из связанной модели.