如何使用orderBy对Eloquent查询进行分页。加入

时间:2016-04-24 18:22:41

标签: mysql orm pagination eloquent laravel-5.2

在这里,根据每篇帖子的评论,我想要一周或一个月的帖子。查询正在运行,但我无法分页。请帮忙!

$top = Post::having('created_at', '>=', $time)
        ->selectRaw('posts.*, count(*) as `aggregate`')
        ->join('post_comments', 'posts.id', '=', 'post_comments.post_id')
        ->groupBy('post_id')
        ->orderBy('aggregate', 'desc')
        ->with('post_comments_count')
        ->get();

2 个答案:

答案 0 :(得分:0)

你是否尝试过Laravel中的 - > paginate()命令?

$top = Post::having('created_at', '>=', $time)
    ->selectRaw('posts.*, count(*) as `aggregate`')
    ->join('post_comments', 'posts.id', '=', 'post_comments.post_id')
    ->groupBy('post_id')
    ->orderBy('aggregate', 'desc')
    ->with('post_comments_count')
    ->paginate(10);

应该可以正常工作。 在您的刀片文件中,您可以使用

调用分页
{!! $top->links() !!}

来源:Laravel Pagination

答案 1 :(得分:0)

需要在使用groupBy时手动设置 paginator ,如Laravel docs中所述!

  

注意:目前,使用groupBy语句的分页操作   Laravel无法有效执行。如果你需要使用   groupBy具有分页结果集,建议您进行查询   数据库并手动创建一个分页器。