教条2与关联映射的分页

dia*_*ich 3 orm doctrine zend-framework associations doctrine-orm

我想知道如何对从Doctrine 2中的实体关联映射获得的结果进行分页?例如

class Customer {
  /**
   * @OneToMany(targetEntity="Order")
   */
  private $orders;
}
Run Code Online (Sandbox Code Playgroud)

可以这样使用:

$customer->getOrders();
Run Code Online (Sandbox Code Playgroud)

这将返回一组Order对象.

问题是当有大量订单对象时.

我们可以Doctrine\ORM\Tools\Pagination\Paginator在构建自定义查询时使用,但是在使用关联映射时,我没有看到任何方法可以挂钩查询生成.

class Paginator {
  /** 
   * @param Query|QueryBuilder $query A Doctrine ORM query or query builder. 
   */
  function __construct(
    //....
Run Code Online (Sandbox Code Playgroud)

Lou*_*eau 5

如果您使用EXTRA_LAZY提取模式,Doctrine将在保湿集合时不检索所有对象.它只会检索在集合上使用slice()方法时所需的子集.

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

$cust = new Customer;
$orders = $cust->getOrders()->slice(100, 50);
Run Code Online (Sandbox Code Playgroud)

您需要验证它与分页的交互方式.