1. ホーム
  2. symfony

[解決済み】Doctrine QueryBuilder で行数を数える。

2022-04-08 23:52:37

質問

Doctrine の QueryBuilder を使ってクエリを作成していますが、クエリから結果の総数を取得したいのです。

$repository = $em->getRepository('FooBundle:Foo');

$qb = $repository->createQueryBuilder('n')
        ->where('n.bar = :bar')
        ->setParameter('bar', $bar);

$query = $qb->getQuery();

//this doesn't work
$totalrows = $query->getResult()->count();

このクエリでカウントを実行して総行数を取得したいだけで、実際の結果を返したいわけではありません。 (このカウントクエリの後、ページネーション用にmaxResultsでさらにクエリを変更するつもりです)。

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

のようなものです。

$qb = $entityManager->createQueryBuilder();
$qb->select('count(account.id)');
$qb->from('ZaysoCoreBundle:Account','account');

$count = $qb->getQuery()->getSingleScalarResult();

DQLをそのまま使うよりも、式の方が何かと良いという人もいます。ある人は、4年前の回答を編集するまでに至りました。私は彼の編集を取り消しました。なるほどね。