2015-02-11 31 views
5

Mam problem z zapytaniem DQL, aby pobrać użytkowników i role z bazy danych MySql. Używam Zend Framework 2 i Doctrine 2.Zapytanie DQL generuje błąd Oczekiwany materiał literalny, otrzymałem "BY"

Zapytanie jest następujące.

public function getUsers() 
{ 
    $builder = $this->getEntityManager()->createQueryBuilder(); 
    $builder->select('u, r') 
      ->from('Application\Entity\Users', 'u') 
      ->leftJoin('Application\Entity\UserRoles', 'r') 
      ->orderBy("u.emailAddress", "ASC"); 

    InfoLogger::vardump($builder->getDQL()); 

    return $builder->getQuery()->getResult(Query::HYDRATE_OBJECT); 
} 

Powyższe zapytanie powoduje błąd, [Syntax Error] linia 0, kol 91: Błąd: Oczekiwany dosłowne, dostał 'BY'

wygenerowanym DQL jest

SELECT u, r FROM Application\Entity\Users u LEFT JOIN Application\Entity\UserRoles r ORDER BY u.emailAddress ASC 

Może ktoś proszę, zauważ, co jest nie tak z tym zapytaniem, wielkie dzięki.

Odpowiedz

7

Wymyśliłem to.

Problem był z linii

->leftJoin('Application\Entity\UserRoles', 'r') 

To powinno być

->leftJoin('u.userRole', 'r') 

userRole jest zdefiniowana w klasie mojego Entity \ Users.