2015-02-09 7 views
5

Ich habe die folgende Abfrage:Fehler mit einer Symfony Abfrage: Erwartete Literal erwartet, '"'

$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(); 

in Symfony Benutzerdaten zu holen, aber ich habe den folgenden Fehler:

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

und meine Abfrageausgabe

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

Haben Sie mit einfachen Zitat versuchen statt doppelte Anführungszeichen? – ekans

Antwort

4

Stringliterale in SQL werden durch einfache Anführungszeichen (') bezeichnet, nicht doppelte Anführungszeichen ("), so:

$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

Vielen Dank, es hat funktioniert. Vielen Dank – Prabhash

1

Sie verwenden auch Expr:

$queryBuilder = $em->createQueryBuilder(); 

... 
->where($queryBuilder->expr()->between('u.created_date', $fromdateaccounts, $todateaccounts)); 
Verwandte Themen