3

我有一个存储库

class TurnoRepository extends EntityRepository
{
    public function findTurnoActivo()
    {
        $q = $this
            ->createQueryBuilder('t')
            ->where('t.activo = :activo')
            ->setParameter('activo', true)
            ->getQuery();

        return $q->getSingleResult();
    }
}

此方法抛出 NoResultException 但如果我尝试在我的控制器中捕获

private function obtenerTurno()
{
    $em = $this->getDoctrine()->getEntityManager();
    $turno = null;

    try {
        $turnoActivo = $em->getRepository('MyBundle:Turno')->findTurnoActivo();
    } catch (NoResultException $e) {
        return false;
    }

    return $turno;

}

我总是在我的页面上收到 500 Internal Server Error

4

2 回答 2

10

Symfony2 代码是命名空间的,所以你必须为类添加正确的命名空间NoResultException,尝试使用:

catch (\Doctrine\ORM\NoResultException $e)

注意 Doctrine 命名空间前面的反斜杠或NoResultException使用use.

于 2012-09-01T15:44:09.060 回答
4

$q->getOneOrNullResult();如果您不想NoResultException在控制器中捕获,则可以使用。

于 2012-09-01T16:24:11.200 回答