猿问

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

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


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


$posts = Post::paginate(10);

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


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


茅侃侃
浏览 108回答 4
4回答

慕慕森

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

达令说

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

慕的地10843

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

jeck猫

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