我在repo中有以下自定义方法:
$query = $qb->select('Client', 'Organization')
->from(':Client', 'Client')
->leftJoin('Client.organizations', 'Organization');
--different searh conditions--
然后我使用paginator来获得结果:
$paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($query->getQuery());
$clients = $paginator->getQuery()
->setMaxResults($length)
->setFirstResult($start);
魔术来了。 我将长度设置为10,第一个结果为0.所以基本上我应该在页面上得到10个结果。但是,如果有5个客户组织(客户mtm组织),那么将有5个结果,如果有7个组织 - 3个结果。
但是如果我添加
$query->groupBy('Client');
然后所有结果都是“正常”:即页面上有10个客户端,但并非所有组织(最多1个)。
有没有人遇到同样的问题?有什么想法,建议吗?
答案 0 :(得分:0)
它可能会多次计算相同的项目。
尝试一次为查询添加distinct子句。
$query = $qb->select('Client', 'Organization')
->from(':Client', 'Client')
->leftJoin('Client.organizations', 'Organization');
->distinct();