¿Cómo seleccionar una consulta distinta utilizando el generador de consultas symfony2 doctrine?

Tengo este código de Symfony donde recupera todas las categorías relacionadas con una sección de blog en mi proyecto:

$category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult(); 

Esto funciona, pero la consulta incluye duplicados:

 Test Content Business Test Content 

Quiero usar el comando DISTINCT en mi consulta. Los únicos ejemplos que he visto requieren que escriba SQL sin procesar. Quiero evitar esto tanto como sea posible, ya que estoy tratando de mantener todo mi código de la misma manera, así que todos usan la función QueryBuilder proporcionada por Symfony2 / Doctrine.

Traté de agregar distinct() a mi consulta de esta manera:

 $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct('cc.categoryid') ->getQuery(); $categories = $category->getResult(); 

Pero da como resultado el siguiente error:

Error fatal: llamada al método no definido Doctrine \ ORM \ QueryBuilder :: distinct ()

¿Cómo le digo a Symfony que seleccione distinct?

podrías escribir

 select DISTINCT f from t; 

como

 select f from t group by f; 

Lo que sucede es que, en este momento, estoy metiéndome en Doctrine, así que no puedo darte una respuesta real. pero podrías, como se muestra arriba, simular un grupo distinto con un grupo y transformarlo en Doctrine . si quieres agregar más filtros, utiliza HAVING después de agrupar.

Esto funciona:

 $category = $catrep->createQueryBuilder('cc') ->select('cc.categoryid') ->where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct() ->getQuery(); $categories = $category->getResult(); 

Si usa la instrucción “select ()”, puede hacer esto:

 $category = $catrep->createQueryBuilder('cc') ->select('DISTINCT cc.contenttype') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult();