Laravel:分页()的结果在页面之间是不稳定的

Posted

技术标签:

【中文标题】Laravel:分页()的结果在页面之间是不稳定的【英文标题】:Laravel: Results of paginate() are inconstant across pages 【发布时间】:2019-09-24 02:23:00 【问题描述】:

我对分页结果有如下问题:

请求:

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

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

提前致谢!

【问题讨论】:

你在使用 group by 吗? 在我连接其他查询时根据选项在多个级别上是的。 检查 laravel 文档,有人提到 laravel 分页与 group by 不兼容。 @PrafullaKumarSahu 是的,你是对的,用分页器的流程给出答案,我将尝试手动创建分页器,如果它有效,那么感谢你,我的问题得到了解决。 我已经发布了答案以及您可能想要关注的参考链接。 【参考方案1】:

根据 Laravel 文档

目前,使用 groupBy 语句的分页操作不能 由 Laravel 高效执行。如果您需要使用 groupBy 与 分页结果集,建议查询数据库 并手动创建分页器。

所以,如果你想分页,你不能在查询中使用groupBy

顺便说一句,你可以试试这个blog post,也许它对你有用。

【讨论】:

好吧,现在手动创建分页器后,问题并没有解决,但是,如果我只使用 get() 方法获取结果,则文章 id 在结果中也是不稳定的。当我删除 groupBy() 时,它工作正常。我现在该怎么办? @FahimUddin 如果 groupBy 不是强制性的最好将其删除,如果您需要 group by,请发布您的代码,这样我可能会有所了解,实际情况如何。 所以,我用 groupBy() 解决了这个问题,现在它工作正常。感谢您指出关于带有 groupBy 的分页器的 Laravel 警告说明以及参考的博客文章。

以上是关于Laravel:分页()的结果在页面之间是不稳定的的主要内容,如果未能解决你的问题,请参考以下文章

成功操作后不会重定向到相同的分页(或页面)。 Laravel

Laravel 4 分页按钮不起作用(查询整个数据库)

如何检查是不是在laravel中使用了分页

Laravel 以编程方式获取特定页面

laravel 转到页面分页

如何使用 Laravel 将查询字符串附加到分页链接