I'm trying to get a single row returned from a native query with Doctrine. Here's my code:
$rsm = new ResultSetMapping; $rsm->addEntityResult('VNNCoreBundle:Player', 'p'); $rsm->addFieldResult('p', 'player_id', 'id');  $sql = "      SELECT player_id       FROM players p      WHERE CONCAT(p.first_name, ' ', p.last_name) = ? ";  $query = $this->getEntityManager()->createNativeQuery($sql, $rsm); $query->setParameter(1, $name); $players = $query->getResult();   That last line returns a list of players but I just want one result. How do I do that?
You can use $query->getSingleResult(), which will throw an exception if more than one result are found, or if no result is found. (see the related phpdoc here https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php#L791)
There's also the less famous $query->getOneOrNullResult() which will throw an exception if more than one result are found, and return null if no result is found. (see the related phpdoc here https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php#L752)
Both getSingleResult() and getOneOrNullResult() will throw an exception if there is more than one result. To fix this problem you could add setMaxResults(1) to your  query builder.
 $firstSubscriber = $entity->createQueryBuilder()->select('sub')         ->from("\Application\Entity\Subscriber", 'sub')         ->where('sub.subscribe=:isSubscribe')         ->setParameter('isSubscribe', 1)           ->setMaxResults(1)         ->getQuery()         ->getOneOrNullResult(); 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With