J'ai le code suivant dans ma classe de référentiel Symfony2 ...
$query = $this->createQueryBuilder('foo')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
Comment obtenir le nombre de lignes trouvées par la base de données?
Merci d'avance
Vous devez exécuter DQL pour faire quelque chose que vous voulez.
$query = $this->createQueryBuilder()
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->select('COUNT(f)')
->getQuery()
->getSingleScalarResult();
Je pense que vous pouvez faire quelque chose comme ça:
$query = $this->createQueryBuilder()
->select('COUNT(f.id)')
->from('foo', 'f')
->where('foo.bar = :id')
->setParameter('id', $myID)
->getQuery();
$total = $query->getSingleScalarResult();
Vous exécutez la requête puis obtenez les résultats. Lorsque vous avez les résultats, vous obtenez le nombre d'enregistrements en faisant un count
sur les résultats:
$results = $query->getResult();
$resultCount = count($results);
Si vous êtes intéressé par la pagination, comme obtenir 25 enregistrements sur le total. Ensuite, vous avez deux choix.
Vous effectuez la requête deux fois, une fois pour obtenir les résultats totaux, une autre fois pour récupérer seulement 25 résultats en utilisant la méthode setFirstResult
et setMaxResults
. Cette méthode setFirstResult
vous permet de définir le décalage et le deuxième, setMaxResults
, nombre d'enregistrements. Le code suivant vous donnera des résultats allant de 25 à 50, c'est la deuxième page si vous utilisez 25 enregistrements par page.
$query->setFirstResult(25);
$query->setMaxResults(25);
Vous pouvez vérifier les extensions de doctrine pour Doctrine2 qui prennent en charge le paginateur. Ces extensions ont été réalisées par l'un des développeurs de Doctrine2. Vous pouvez les consulter ici .
J'espère que cette aide.
Cordialement,
Mat
Je pense que c'est aussi concis que possible:
$qb = $repo->createQueryBuilder('entity');
$qb->select('COUNT(entity)');
$count = $qb->getQuery()->getSingleScalarResult();
Où $repo
est de type Doctrine\ORM\EntityRepository