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 に答える