【发布时间】:2015-02-21 10:16:10
【问题描述】:
我遇到了教义 2 分页器的问题。我做了一个非常基本的例子来解释这种情况:
$queryBuilder->select('entity');
$queryBuilder->join('SomeModule\Entity\SomeEntity', 's', 'WITH', '(s.objectClass = :class AND p.foreignKey = :foreignkey');
$paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($queryBuilder);
导致错误“无法计算选择两个 FROM 组件的查询,无法区分”: Doctrine\ORM\Tools\Pagination\WhereInWalker
这样做是因为有两个组件,但在这种情况下,没有从 'SomeModule\Entity\SomeEntity' 中选择任何列:
if (count($rootComponents) > 1) {
throw new \RuntimeException("Cannot count query which selects two FROM components, cannot make distinction");
}
在我的例子中,当我注释异常时它会起作用,因为它只会使用第一个 $rootComponent。有谁知道这种奇异连接的解决方案,而无需更改/扩展 WhereInWalker 类?
当我使用 master 分支时,我使用了 ORM 2.4.6 版本: https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Tools/Pagination/WhereInWalker.php 问题已解决。但我宁愿不要在我们的环境中使用 master 分支。
【问题讨论】:
标签: php join doctrine-orm pagination