按预先加载的关系计数排序

SaK*_*Ker 2 php eager loading laravel eloquent

我有这样的事情

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

在我的控制器中,我像这样加载这个项目

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

我需要得到喜欢计数并按这个数字分页排序这个列表,就像这样

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

,这显然不起作用。有小费吗 ?谢谢。

Kma*_*rYC 5

只是一个解决方案。但我认为有一个更好的

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