Me gustaría paginar una solicitud compleja con al menos 2 uniones izquierdas, pero el paquete de paginación que estoy usando (KnpPaginationBundle) no puede decirle a Doctrine cómo contar el resultado (which is needed for the pagination process) y sigue teniendo esta excepción.Doctrina: Paginación con combinaciones de la izquierda
Cannot count query which selects two FROM components, cannot make distinction
Aquí está una muestra de construcción con la Doctrina QueryBuilder.
public function findGroupsByUser(User $user, $listFilter, $getQuery = false, $order = 'ASC')
{
$query = $this->createQueryBuilder('r')
->select('r as main,g')
->select('r as main,g, count(gg) as members')
->leftjoin('r.group', 'g')
->innerjoin('MyBundle:GroupMemberRel', 'gg', 'WITH', 'r.group = gg.group')
->addGroupBy('g.groupId')
->add('orderBy', 'g.name ' . $order);
if ($getQuery == true) {
return $query;
}
return $query->getQuery()->getResult();
}
Entonces daré esta solicitud al servicio knp_paginator, y luego tengo la excepción
$groupQuery = $this->em->getRepository('MyBundle:GroupMemberRel')->findGroupsByUser($user, $listFilter, true);
$paginator = $this->container->get('knp_paginator');
/* @var $groups Knp\Component\Pager\Pagination\PaginationInterface */
$groups = $paginator->paginate(
$groupQuery, $this->container->get('request')->query->get('page', 1), 10 /* limit per page */
);
Cualquier idea sobre cómo paginar a través de una solicitud compleja, estoy bastante seguro de que este uso -case es común, no quiero hidratar mi resultado después de la paginación.
Los adaptadores de ORM de la doctrina de Pagerfanta deben ser capaces de manejar las consultas de weirds. https://github.com/whiteoctober/Pagerfanta – AdrienBrault
Esta consulta no es tan extraña, estoy seguro de que hay una manera de hacerlo simplemente con knp paginator, tal vez debería tener un aspecto más profundo para el buscador de nudillos –
Estoy enfrentando este problema ... ¿alguna solución? – tttony