2017-02-11 2 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

находка ($ ID)

findBy (массив())

findOneBy (массив())

Я думаю, что вы не должны путать три метода

Смежные вопросы