6

バージョン 2.2 以降、Doctrine にはPaginatorがあります。ドキュメントには 1 つの例しかありません。

<?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->getResult()

ページネーションに関するバンドルがいくつかあることは知っていますが、そのような些細な問題のためにサードパーティのバンドルをインストールしたくありません。一方、doctrine2 のページネーションについては何も見つかりません。クラスのいくつかの便利なメソッドがあるはずです。どこでそれらを見つけることができますか? そうでない場合、クラス全体のポイントは何ですか?

4

1 に答える 1

4

Doctrine のページネータは Symfony に対応していません — 低レベルで Doctrine 固有です。

一方、サードパーティのバンドルをインストールすると、Doctrine ORM と ODM、Propel、プレーン配列などのページネーション アダプターが得られます。また、Symfony 統合とビュー ヘルパーも得られます。少なくとも、私が使用しているWhiteOctoberPagerfantaBundleは、これらすべてを実行します。

したがって、Doctrine のみを使用する場合を除き、サード パーティのバンドルについての立場を再考することをお勧めします。

于 2012-04-11T13:51:35.967 に答える