1

一意のメールが記載された登録フォームがあります。私がやりたいのは、誰かが常に別のユーザーに登録されている電子メールに記入した場合、この誰かが私が書いたメッセージを見るということです。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin@domain.com' for key 'UNIQ_1483A5E9E7927C74'

私はこれをリポジトリクラスで試しました:

public function getSameFriends ($email)
    {
        $q = $this->createQueryBuilder('f');

        $q->select('f')
          ->where('f.email = :email')      
          ->setParameter('email', $email);

        return $q->getQuery()->getSingleScalarResult();
    }

次に、コントローラーでこれを実行します。

$em = $this->getDoctrine()->getEntityManager();
        $count = $em->getRepository('EMMyFriendsBundle:Friend')
                                    ->getSameFriends($friend->getEmail());
        if($count != 0)
        {
            $this->get('session')->setFlash('notice', 'There already is a friend with this email!');
            return $this->redirect($this->generateUrl('home_display'));
        }

しかし、私は例外を取得します

No result was found for query although at least one row was expected.
500 Internal Server Error - NoResultException

結果が1か0かを知るためだけに、クエリの結果は必要ありません。これを作成する方法はありますか?

4

1 に答える 1

3

できるよ:

return count($q->getQuery()->getResult());

ところで、「uniqueEntity」検証制約を見ましたか? すぐに必要な機能を提供します。

http://symfony.com/doc/current/reference/constraints/UniqueEntity.html

于 2012-09-13T08:01:05.210 に答える