Symfony2リポジトリクラスに次のコードがあります...
$query = $this->createQueryBuilder('foo')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
データベースで見つかった行数を取得するにはどうすればよいですか?
前もって感謝します
必要なことを行うには、DQLを実行する必要があります。
$query = $this->createQueryBuilder()
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->select('COUNT(f)')
->getQuery()
->getSingleScalarResult();
そのようなことができると思います:
$query = $this->createQueryBuilder()
->select('COUNT(f.id)')
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->getSingleScalarResult();
クエリを実行して、結果を取得します。結果が得られたら、結果に対してcount
を実行してレコード数を取得します。
_$results = $query->getResult();
$resultCount = count($results);
_
合計のうち25レコードを取得するなど、ページングに関心がある場合。次に、2つの選択肢があります。
クエリを2回実行し、1回は合計結果を取得し、もう1回はメソッドsetFirstResult
およびsetMaxResults
を使用して25件の結果のみを取得します。このメソッドsetFirstResult
を使用すると、オフセットと2番目のレコードsetMaxResults
の数を設定できます。次のコードは、25〜50の範囲の結果を提供します。ページごとに25レコードを使用する場合、2番目のページになります。
$query->setFirstResult(25);
$query->setMaxResults(25);
ページネーターをサポートしているDoctrine2のDoctrine-extensionsを確認できます。これらの拡張機能は、Doctrine2の開発者の1人によって作成されました。これらを確認できます here 。
この助けを願っています。
よろしく、
マット
私はこれが得るほど簡潔だと思います:
$qb = $repo->createQueryBuilder('entity');
$qb->select('COUNT(entity)');
$count = $qb->getQuery()->getSingleScalarResult();
どこ$repo
はタイプDoctrine\ORM\EntityRepository