У меня есть что-то вроде этого
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);
, который, очевидно, не работает. Какие-нибудь советы ? Благодарю.
Просто решение. Но я думаю, что есть лучший
$items = Item::with([
...
'likes',
'comments',
...
])
->withCount('likes')
->orderBy('likes_count','DESC')
->paginate(10);
Попробуйте посмотреть, если вы получите желаемый результат
$items = Item::with([
...
'likes'=>function($query){
$query->selectRaw('likes.*,count(likes.LikeID) as LikesCount')->groupBy('Item.itemID');
},
'comments',
...
])
->orderBy('likes.Likescount','DESC')
->paginate(10);