2

私はこのようなものを持っています

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);

、明らかに機能していません。任意のヒント ?ありがとう。

4

2 に答える 2

5

ただの解決策でももっといいのがあると思う

$items = Item::with([
        ...
        'likes',
        'comments',
        ...
    ])
        ->withCount('likes')
        ->orderBy('likes_count','DESC')
        ->paginate(10);
于 2016-08-26T09:00:25.270 に答える
0

これを試して、目的の出力が得られるかどうかを確認してください

$items = Item::with([
    ...
 'likes'=>function($query){
 $query->selectRaw('likes.*,count(likes.LikeID) as LikesCount')->groupBy('Item.itemID');
 },
    'comments',
    ...
])
    ->orderBy('likes.Likescount','DESC')
    ->paginate(10);
于 2016-08-26T09:05:21.983 に答える