4

Doctrine 2 のエンティティ関連付けマッピングから得られた結果をどのようにページ付けできますか? 例えば

class Customer {
  /**
   * @OneToMany(targetEntity="Order")
   */
  private $orders;
}

次のように使用できます。

$customer->getOrders();

オブジェクトのコレクションを返しOrderます。

問題は、多数の注文オブジェクトがある場合です。

カスタム クエリを作成するときに使用できますがDoctrine\ORM\Tools\Pagination\Paginator、アソシエーション マッピングを利用するときにクエリ生成にフックする方法がわかりません。

class Paginator {
  /** 
   * @param Query|QueryBuilder $query A Doctrine ORM query or query builder. 
   */
  function __construct(
    //....
4

2 に答える 2

6

EXTRA_LAZY fetch モードを使用する場合、Doctrine はコレクションをハイドレートするときにすべてのオブジェクトを取得しません。コレクションで slice() メソッドを使用するときに必要なサブセットのみを取得します。

class Customer {
    /**
     * @OneToMany(targetEntity="Order", fetch="EXTRA_LAZY")
     */
    private $orders;
}

$cust = new Customer;
$orders = $cust->getOrders()->slice(100, 50);

これがページネーションとどのように相互作用するかを確認する必要があります。

于 2012-04-06T15:24:31.083 に答える