Laravel:paginate()的结果在各个页面上是不一致的

时间:2019-05-06 12:34:39

标签: laravel lumen laravel-query-builder paginator laravel-pagination

我对分页结果有以下疑问:

请求:

GET http://localhost:1000/api/v1/public/blog/articles

响应:

{
    "current_page": 1,
    "data": [
        {
            "article_id": 43
        },
        {
            "article_id": 107
        },
        {
            "article_id": 171
        },
        {
            "article_id": 22
        },
        {
            "article_id": 86
        },
        {
            "article_id": 150
        },
        {
            "article_id": 1
        },
        {
            "article_id": 65
        },
        {
            "article_id": 129
        },
        {
            "article_id": 44
        }
    ],
    "first_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=1",
    "from": 1,
    "last_page": 18,
    "last_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=18",
    "next_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=2",
    "path": "http://localhost:1000/api/v1/public/blog/articles",
    "per_page": "10",
    "prev_page_url": null,
    "to": 10,
    "total": 179
}

因此,现在,如果我在同一链接中再次请求,它将显示一组具有不同ID的不同文章。 另外,如果我转到page = 1或page = 2,则每一页的结果都是不稳定的。

我不确定发生此问题的地方, 我想提一下,我其他的分页查询都可以正常工作,除非我尝试合并查询以获取特定结果,如下所示:

$query = DB::query();

// Then Concatenating other queries based on options

// Now Execute The Whole Query
$fetched_articles = $query->paginate(5);

如果有人可以在此处用解决方案或解决方法描述分页器流程,那将是有帮助的。

预先感谢!

1 个答案:

答案 0 :(得分:0)

根据Laravel文档

  

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

因此,如果您想分页,则不能在查询中使用groupBy

顺便说一句,您可以尝试使用此blog post,也许它会为您服务。