2015-02-09 2 views
5

У меня есть следующий запрос:Ошибки при запросе Symfony: Ожидаемая Буквальными, получил «"»

$query = $em->createQueryBuilder() 
      ->select('u.id,u.username,u.username_canonical,u.email,u.email_canonical,u.last_login,u.name,u.type,u.phone,u.site,u.agency,u.subtype,u.info,u.created_date,u.vip') 
      ->from('ContrateAdminBundle:Fosuser', 'u') 
         ->where('u.created_date BETWEEN "'.$fromdateaccounts.'" AND "'.$todateaccounts.'" ')      
      ->getQuery(); 
     $results = $query->getResult(); 

в Symfony для извлечения пользовательских данных, но я получил следующее сообщение об ошибке:

[Syntax Error] line 0, col 223: Error: Expected Literal, got '"' 
500 Internal Server Error - QueryException 
1 linked Exception: QueryException » 

и мой выходной запрос

SELECT u.id,u.username,u.username_canonical,u.email,u.email_canonical,u.last_login,u.name,u.type,u.phone,u.site,u.agency,u.subtype,u.info,u.created_date,u.vip FROM ContrateAdminBundle:Fosuser u WHERE u.created_date BETWEEN "2014-08-04 13:29" AND "2014-10-30 13:29" 
+0

Вы попробовать простой цитатой вместо двойных кавычек? – ekans

ответ

4

строковые литералы в SQL обозначаются одинарные кавычки ('), а не двойные кавычки ("), так:

$query = $em->createQueryBuilder() 
       ->select('u.id,u.username,u.username_canonical,u.email,u.email_canonical,u.last_login,u.name,u.type,u.phone,u.site,u.agency,u.subtype,u.info,u.created_date,u.vip') 
       ->from('ContrateAdminBundle:Fosuser', 'u') 
       ->where("u.created_date BETWEEN '${fromdateaccounts}' AND '{$todateaccounts}'")      
       ->getQuery(); 
+0

Большое вам спасибо. Спасибо большое. – Prabhash

1

Вы можете также использовать Expr:

$queryBuilder = $em->createQueryBuilder(); 

... 
->where($queryBuilder->expr()->between('u.created_date', $fromdateaccounts, $todateaccounts)); 
Смежные вопросы