1. ホーム
  2. php

[解決済み] symfony2のdoctrineクエリビルダでdistinctクエリを選択する方法は?

2023-07-18 23:59:29

質問

私のプロジェクトでブログセクションに関連するすべてのカテゴリを取得する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();

しかし、以下のようなエラーになります。

Fatal error: Call to undefined method DoctrineORMQueryBuilder::distinct()

symfonyにdistinctを選択するように伝えるにはどうすればよいですか?

どのように解決するのですか?

と書けばよいでしょう。

select DISTINCT f from t;

として

select f from t group by f;

についてですが、私は現在 Doctrine を使い始めたばかりなので、本当の答えを出すことはできません。しかし、上記のように によってグループ化することができます。 をシミュレートし、それを ドクトリン さらにフィルタリングを追加したいのであれば HAVING を使ってください。