【问题标题】:Doctrine2 PaginatorDoctrine2 分页器
【发布时间】:2012-04-11 21:51:35
【问题描述】:

从 2.2 版 Doctrine 开始有Paginator。文档中只有一个示例:

<?php
use Doctrine\ORM\Tools\Pagination\Paginator;

$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c";
$query = $entityManager->createQuery($dql)
                       ->setFirstResult(0)
                       ->setMaxResults(100);

$paginator = new Paginator($query, $fetchJoin = true);

$c = count($paginator);
foreach ($paginator as $post) {
    echo $post->getHeadline() . "\n";
}

这个类没有什么新东西,因为文档中描述的整个过程都可以用$query-&gt;getResult()来完成。

我知道有一些关于分页的捆绑包,但我不想为这些琐碎的问题安装第三方捆绑包。另一方面,我找不到任何关于教义分页的信息2。该类应该有一些有用的方法。我在哪里可以找到它们?如果没有,那么全班的意义何在?

【问题讨论】:

标签: orm symfony pagination doctrine-orm


【解决方案1】:

Doctrine 的分页器不是 Symfony 感知的——它是低级的并且是特定于 Doctrine 的。

另一方面,如果您安装a 3rd party bundle,您将获得 Doctrine ORM 和 ODM、Propel、普通数组等的分页适配器。您还将获得 Symfony 集成和视图助手。至少我使用的 WhiteOctoberPagerfantaBundle 可以完成所有这些工作。

所以,除非您只使用 Doctrine,否则我建议您重新考虑您对 3rd 方捆绑包的立场。

【讨论】:

  • 这不能回答问题,因为手头的问题没有任何 Symfony 特定的内容。最好有一个纯理论的解决方案。我遇到了完全相同的问题,也想知道 Paginator 类的意义何在。
  • AFAICT,Paginator 类的存在仅仅是为了解决尝试在 JOINed DQL 查询上使用 setMaxResults 时出现的问题。对我来说有点糟糕的设计,但显然我知道什么。 >.
  • 对于所有声称并同意这个问题不是 Symfony 特定的事实的人,请仔细查看问题中使用的“symfony”标签和术语“bundle(s)”。如果您对 Symfony 上下文之外的 Paginator 类感兴趣,请提出单独的问题,而不是否决 6 年前解决 OP 需求的答案。
猜你喜欢
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 2012-05-28
  • 2016-03-20
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多