diff --git a/lib/Doctrine/ORM/AbstractQuery.php b/lib/Doctrine/ORM/AbstractQuery.php index 07b6b9ea9..4c1f9ac64 100644 --- a/lib/Doctrine/ORM/AbstractQuery.php +++ b/lib/Doctrine/ORM/AbstractQuery.php @@ -609,7 +609,12 @@ abstract class AbstractQuery */ public function getOneOrNullResult($hydrationMode = null) { - $result = $this->execute(null, $hydrationMode); + try { + $result = $this->execute(null, $hydrationMode); + } catch (NoResultException $e) { + return null; + } + if ($this->_hydrationMode !== self::HYDRATE_SINGLE_SCALAR && ! $result) { return null; diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2655Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2655Test.php new file mode 100644 index 000000000..8a2dc166a --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2655Test.php @@ -0,0 +1,23 @@ +useModelSet('cms'); + parent::setUp(); + } + + public function testSingleScalarOneOrNullResult() + { + $query = $this->_em->createQuery("SELECT u.name FROM Doctrine\Tests\Models\CMS\CmsUser u WHERE u.username = 'happy_doctrine_user'"); + $this->assertNull($query->getOneOrNullResult(Query::HYDRATE_SINGLE_SCALAR)); + } +}