2017-02-11 19 views
-1

$_POST['email']の値が私のテーブルに存在するかどうか確認したいと思います。そうでない場合は、新しい値をデータベースに追加する必要があります。データベースに値が存在するか確認してください

$member = new Members(); 
$member->setEmail($_POST['email']); 
$member->setName($_POST['vorname']); 
$member->setPassword(password_hash($_POST['pw1'], PASSWORD_DEFAULT)); 

$em = $this->getDoctrine()->getManager(); 
$em->persist($member); 

$get_email = $this->getDoctrine()->getRepository('AppBundle:Members')->find($_POST['email']); 

if (!$get_email) { 
    $em->flush(); 
    echo 'User registered.'; 
} 
else { 
    echo 'User already exists.'; 
} 

この場合、ユーザーは常に登録されます。

私のコードで何が問題になっていますか?

答えて

3

メソッドfindBy()を使用して、連想配列 "field" => "value"をパラメータとして取得します。

だから例では(メールはemailという名前の列に格納されていると仮定します):

$get_email = $this->getDoctrine()->getRepository('AppBundle:Members')->findBy(array('email' => $_POST['email'])); 
+2

代わりに 'findBy()'ではありませんあなたがそのような配列を渡しているときに、 'find()'の? –

+0

@MagnusErikssonあなたは絶対に正しいです。 'findBy'は私の魅力のように機能します! –

+0

ああ、申し訳ありませんが、私はOPの投稿をミスしました。 @MagnusErikssonさん、ありがとうございました。 –

0

検索($番号)

findBy(配列())

findOneBy(配列() )

私はあなたが3つの方法を混同すべきではないと思います

関連する問題