为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
缥缈止盈 2022-07-16 10:58:10
我想检索按 created_at 日期排序的帖子,但我也想对结果进行分页。到目前为止,我已经尝试过以下方法:$posts = Post::orderBy('created_at', 'desc')->get();$posts = Post::paginate(10);以上仅返回 10 个结果,并且不按 created_at 日期排序。我想检索按 created_at 日期排序的 10 个帖子。任何帮助表示赞赏。
查看完整描述

5 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

返回的帖子被覆盖的原因是您正在重新分配$posts变量。请查看以下内容以纠正问题。

Laravel QueryBuilder 允许您将多个过滤器一个接一个地串起来。

在这种情况下,您将按 created_at 日期对帖子进行排序,然后通过分页过滤器检索结果。分页过滤器将替换->get().

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


查看完整回答
反对 回复 2022-07-16
?
慕沐林林

TA贡献2016条经验 获得超9个赞

你可以这样尝试

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


查看完整回答
反对 回复 2022-07-16
?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以简单地使用paginate()而不是get(). 两者都从数据库中获取数据,而只有一个区别是,分页根据给定的参数设置限制,并根据需要设置限制和偏移量。

分页雄辩的结果

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

打印分页链接,例如:

{{ $$posts->links() }}


查看完整回答
反对 回复 2022-07-16
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我不确定“如果同时编写两个代码,它会被覆盖”是什么意思,但以下应该可以工作:

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


查看完整回答
反对 回复 2022-07-16
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你可以像这样使用 paginate 或 simplePaginate

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

详情https://laravel.com/docs/5.8/pagination


查看完整回答
反对 回复 2022-07-16
  • 5 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信