Заказ по загруженному количеству отношений

У меня есть что-то вроде этого

class Item extends Model
{
...
public function likes() {
return $this->hasMany('like');
}
...

В свой контроллер я загружаю этот элемент, как это

$items = Item::with([
...
'likes',
'comments',
...
])
->paginate(10);

Мне нужно получить количество лайков и упорядочить этот список с разбивкой по этому номеру примерно так

$items = Item::with([
...
'likes',
'comments',
...
])
->orderBy(likes->count())
->paginate(10);

, который, очевидно, не работает. Какие-нибудь советы ? Благодарю.

2

Решение

Просто решение. Но я думаю, что есть лучший

$items = Item::with([
...
'likes',
'comments',
...
])
->withCount('likes')
->orderBy('likes_count','DESC')
->paginate(10);
4

Другие решения

Попробуйте посмотреть, если вы получите желаемый результат

$items = Item::with([
...
'likes'=>function($query){
$query->selectRaw('likes.*,count(likes.LikeID) as LikesCount')->groupBy('Item.itemID');
},
'comments',
...
])
->orderBy('likes.Likescount','DESC')
->paginate(10);
0

По вопросам рекламы [email protected]