私のプロジェクトのブログセクションに関連するすべてのカテゴリを取得するsymfonyのコードがあります:
$category = $catrep->createQueryBuilder('cc')
->Where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->getQuery();
$categories = $category->getResult();
これは機能しますが、クエリには重複が含まれます。
Test Content
Business
Test Content
クエリでDISTINCT
コマンドを使用したい。私が見た唯一の例では、生のSQLを書く必要があります。 Symfony2/Doctrineが提供するQueryBuilder機能をすべて使用するように、すべてのコードを同じにしようとしているので、これを可能な限り回避したいと思います。
次のようにクエリにdistinct()
を追加してみました。
$category = $catrep->createQueryBuilder('cc')
->Where('cc.contenttype = :type')
->setParameter('type', 'blogarticle')
->distinct('cc.categoryid')
->getQuery();
$categories = $category->getResult();
ただし、次のエラーが発生します。
致命的なエラー:未定義のメソッドDoctrine\ORM\QueryBuilder :: distinct()の呼び出し
Symfonyに個別の選択を指示するにはどうすればよいですか?
これは動作します:
$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();