在存储库级别在 Doctrine2 ORM 中实现分页的最佳实践
Posted
技术标签:
【中文标题】在存储库级别在 Doctrine2 ORM 中实现分页的最佳实践【英文标题】:Best practices of implementing pagination in Doctrine2 ORM on repository level 【发布时间】:2013-08-19 09:03:07 【问题描述】:我知道Doctrine's Paginator,但它适用于 DQL 级别。我正在寻找的是一种在存储库级别实现分页的方法。
我看到的第一种方法是在 repo 中封装分页:
通过使其所有方法接受两个额外的参数,$offset
和 $limit
,或者
通过在我的 repo 中实现 setOffset
和 setLimit
方法,这将影响它的所有 find...
方法(由于 DefaultRepositoryFactory
实现 which behaves as a Singleton Factory 这不好)。
另一种方法是在this question 中创建一个ResultBuilder
类。我不太喜欢这种方法,因为它适用于预取的结果集,即使使用 Doctrine 的延迟加载,它也会进行额外的数据检索。
还有哪些其他方法可以解决这个问题,哪种方法最适合 Doctrine2 ORM 用户?
【问题讨论】:
【参考方案1】:我发现的一个可能的解决方案是创建一个相应的过滤器(使用 LIMIT 语句),如official documentation 中所述,并在使用它的查询方法(包括自定义)之前将该过滤器应用于存储库。
【讨论】:
以上是关于在存储库级别在 Doctrine2 ORM 中实现分页的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章