2012-02-18 3 views
4

등록 양식을 만들고 이메일이 아직 계정과 연결되어 있지 않은지 확인하고 싶습니다. 내가 볼 수있는 모든 방법은 전체 User 엔터티를 만들지 만, 그것이 있는지 알아야합니다.Doctrine 2에 엔티티가 있는지 확인하는 가장 효율적인 방법

/** 
* @param string $token 
* @return bool 
*/ 
public function isTokenUnique($token) 
{ 
    $manager = $this->getEntityManager(); 

    /** @var Doctrine\ORM\Query $query */ 
    $query = $manager-> 
     createQuery('SELECT 1 FROM AppBundle:Member m WHERE m.token = :token') 
      ->setParameter('token', $token) 
      ->setMaxResults(1) 
    ; 

    return (count($query->getResult()) == 0); 
} 

공지 사항 setMaxResults()에 전화 :

+0

Symfony 2로 아직 마이그레이션하지 않았지만 Symfony 1에서는 폼의 유효성 검사기 스키마에'sfValidatorDoctrineUnique'를 추가했습니다. 비슷한 개념이 Symfony 2에 존재하지 않습니까? –

+1

Symfony에서 Doctrine을 사용하지 않습니다. –

+4

좋은 지적. 그 질문은 프레임 워크로 태그가 지정되지 않는다는 사실을 무시하도록 가르쳐 줄 것입니다 (: –

답변

8
public function isUnusedEmail($email) { 
    $em = static::$pimple['em']; 
    $dql = 'SELECT 1 FROM App\Model\User user WHERE user.email = :email'; 
    $query = $em->createQuery($dql); 
    $query->setParameter('email', $email); 

    $res = $query->getResult(); 
    return empty($res); 
    } 
2

는 다음과 같은 방법을 생각해 보자. 어떤 경우에는 중요 할 수 있습니다.

관련 문제