在 symfony 4 中分页的最佳方式

Posted

技术标签:

【中文标题】在 symfony 4 中分页的最佳方式【英文标题】:Optimal way to paginate in symfony 4 【发布时间】:2018-06-23 07:42:45 【问题描述】:

我正在构建一个 API,我想知道在 symfony (v4) 和学说 ORM 中分页的最佳方式是什么。

我使用了一些捆绑软件,例如 knp paginator 和 Pagerfanta,但我之所以这么问,是因为当我们在数据库中有大量数据时,我会关心性能。 用Doctrine的Paginator自己实现分页不是更好吗?

谢谢。

【问题讨论】:

【参考方案1】:

如果你没有提到你期望有多少数据,这很难回答。

现在,我会简单地使用whiteoctober/Pagerfanta

我使用Pagerfanta 对单个 Postgres 表中 ~200 000 000 条记录的结果进行分页。

没有性能问题。

官方Symfony 4 demo也有使用。

实现您自己的、更高效的分页器 - 对我来说听起来总是一个好主意(和挑战)。但是如果没有预期的数据量,您将无法检查其效率。

【讨论】:

我会选择 whiteoctober/Pagerfanta ,我只是想从人们那里获得有关性能的反馈,2 亿是可以的数据。 几年前我和朋友也有过同样的讨论......我们没有找到比现有解决方案更好的解决方案。 Pagerfanta 不在我的 Symfony 4.3 演示项目中。相反,有一个分页助手类包裹在 Doctrine Paginator 对象周围,仅用于通过启用 OutputWalker 来处理包含“have”的查询。不会撒谎,我不知道那是怎么回事。 Pagerfanta 也不在 atm 指向 Symfony 5 的链接中。也就是说,Pagerfanta 乍一看还不错。

以上是关于在 symfony 4 中分页的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

Symfony-Doctrine从不同数据库导入数据的最佳方式

如何在 Symfony 中增加会话超时

弃用服务的公共使用

如何托管多个 symfony 项目?

通过单元测试访问 Symfony 2 容器?

在 Android Studio 中分析 Proguard 优化构建的最佳方式?