Как выбрать отдельный запрос с помощью построителя запросов symfony2?

У меня есть этот код symfony, где он извлекает все категории, относящиеся к блогу в моем проекте:

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

Это работает, но запрос включает дубликаты:

 Test Content Business Test Content 

Я хочу использовать команду DISTINCT в моем запросе. Единственные примеры, которые я видел, требуют, чтобы я написал сырой SQL. Я хочу избежать этого как можно больше, поскольку я пытаюсь сохранить весь свой код таким же, чтобы все они использовали функцию QueryBuilder, предоставленную Symfony2 / Doctrine.

Я попробовал добавить в свой запрос distinct() запрос:

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

Но это приводит к следующей ошибке:

Неустранимая ошибка: вызов неопределенного метода Doctrine \ ORM \ QueryBuilder :: distinct ()

Как я могу сказать symfony, чтобы выбрать отдельный?

Solutions Collecting From Web of "Как выбрать отдельный запрос с помощью построителя запросов symfony2?"

вы могли бы написать

 select DISTINCT f from t; 

в виде

 select f from t group by f; 

Дело в том, что я сейчас вхожу в Доктрину, поэтому я не могу дать вам реальный ответ. но вы могли бы, как показано выше, имитировать отличную от группы группу и преобразовать ее в Доктрину . если вы хотите добавить дополнительную фильтрацию, используйте HAVING после группы.

Это работает:

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

Если вы используете инструкцию «select ()», вы можете сделать это:

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