获取也使用 Laravel QueryBuilder 排序的分页结果

我想检索按 created_at 日期排序的帖子,但我也想对结果进行分页。到目前为止,我已经尝试过以下方法:


$posts = Post::orderBy('created_at', 'desc')->get();


$posts = Post::paginate(10);

以上仅返回 10 个结果,并且不按 created_at 日期排序。


我想检索按 created_at 日期排序的 10 个帖子。任何帮助表示赞赏。


缥缈止盈
浏览 102回答 5
5回答

慕森王

返回的帖子被覆盖的原因是您正在重新分配$posts变量。请查看以下内容以纠正问题。Laravel QueryBuilder 允许您将多个过滤器一个接一个地串起来。在这种情况下,您将按 created_at 日期对帖子进行排序,然后通过分页过滤器检索结果。分页过滤器将替换->get().$posts = Post::orderBy('created_at', 'desc')->paginate(10);

慕沐林林

你可以这样尝试$posts = Post::orderBy('created_at', 'desc')->paginate(10);

萧十郎

您可以简单地使用paginate()而不是get(). 两者都从数据库中获取数据,而只有一个区别是,分页根据给定的参数设置限制,并根据需要设置限制和偏移量。分页雄辩的结果$posts = Post::orderBy('created_at', 'desc')->paginate(10);打印分页链接,例如:{{ $$posts->links() }}

蛊毒传说

我不确定“如果同时编写两个代码,它会被覆盖”是什么意思,但以下应该可以工作:$posts = Post::orderBy('created_at', 'desc')->paginate(10);

汪汪一只猫

你可以像这样使用 paginate 或 simplePaginate$posts = Post::orderBy('created_at', 'desc')->paginate(10);详情https://laravel.com/docs/5.8/pagination
打开App,查看更多内容
随时随地看视频慕课网APP