2016-08-01 3 views
0

Я пишу приложение Symfony3 с помощью Doctrine ORM.Symfony3 Doctrine querybuilder

У меня есть сущность со всеми моими атрибутами и их сеттерами и геттерами.

Попытка построить, чтобы я мог получить строку на основе адреса электронной почты.

my query: 

     /** 
    * @param $email 
    */ 
    public function getUserByEmail($email) 
{ 
    $repository = $this->db->EntityManagerORM() 
     ->getRepository('TestBundle:User'); 

    $query = $repository->createQueryBuilder('t') 
     ->where('t.emial = :email') 
     ->setParameter(':email', $email) 
     ->getQuery(); 

    $test = $query->getResult(); 

    var_dump($test); 
  1. $ this-> дб является EntityManager, которая является услугой и конкретизируется в моем __construct. поэтому то, что я делаю, это получение объекта, они создают queryBuilder, где я хочу получить целую строку, которая по электронной почте == указанному письму.

    ответ я получаю:

    "Notice: Undefined index: [Semantical Error] line 0, col 63 near 'emial 
    

    =: ЕМА ': Ошибка: Класс Test \ TestBundle \ Entity \ User не имеет поля или

    ассоциацию под названием emial»

ничего подозрительный в моем коде ....?

ответ

1

это написание электронной почты. Измените следующим образом:

$query = $repository->createQueryBuilder('t') 
     ->where('t.email = :email') 
     ->setParameter(':email', $email) 
     ->getQuery(); 

Это должно решить проблему.

+0

OMG. Я немного смущен: P, но спасибо за то, что вы его заметили. это была единственная проблема. – John

+0

Нет проблем, часто нам нужен еще один человек, чтобы помочь нам просмотреть наш код. –

1

: не требуется комплектParameter функция.

Другое, что неправильно в вашем коде, в таблице пользователя нет столбца с именем emial. Дважды проверьте и замените его соответствующим именем.

Таким образом, ваш запрос будет выглядеть примерно так,

$query = $repository->createQueryBuilder('t') 
     ->where('t.RIGHT_COLUMN_NAME = :email') 
     ->setParameter('email', $email) 
     ->getQuery(); 

В коде выше замените RIGHT_COLUMN_NAME с правильным названием столбца.

+0

Эй, я могу гарантировать, что эта колонка существует LOL. – John

+0

и: я просто добавляю, чтобы отличать параметр от table.column, поэтому код более читаем. – John

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