2012-02-18 15 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

は、以下の方法を考えてみましょう。場合によっては重要なこともあります。

関連する問題