2016-04-04 5 views
4

Die folgende Abfrage, die ich verwenden möchte, um die Bestelldaten von Geschäften zu bestellen. Ich möchte, dass sie in aufsteigender Reihenfolge aber tun, wenn ich versuche, das ich die folgende Fehlermeldung erhalten, um Probelauf:Abfrage des Bestelldatums, Syntaxfehler

[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'order'

$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('order'); 

    $orderSales->orderBy('order.date', 'asc'); 
    $orderSales = $orderSales->getQuery(); 
    $orderResult = $orderSales->getResult(); 

I orderResult in der .twig Vorlage

return $this->render('admin/store/sales/adminsales.html.twig', array(
          'orderResult' =>$orderResult 
    )); 
+0

Als Hinweis sollten Sie eine unabhängige Repository-Methode erstellen, anstatt Ihren queryBuilder innerhalb des Controllers zu erstellen. – Delphine

+0

Danke, ich werde das ändern – KevinTheGreat

Antwort

2

Fehler, wenn mit Wort order in createQueryBuilder('order')

ändern order

Um

nur o zum Beispiel createQueryBuilder('o')

Ergebnis:

$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('o'); 

$orderSales->orderBy('o.date', 'asc'); 
$orderSales = $orderSales->getQuery(); 
$orderResult = $orderSales->getResult(); 

2

Verfahren tun machen createQueryBuilder nicht akzeptieren Argumente so setzen Sie Ihren Alias ​​in der select Methode wie folgt:

$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder(); 

$orderSales->select('order'); 

$orderSales->orderBy('order.date', 'asc'); 
$orderSales = $orderSales->getQuery(); 
$orderResult = $orderSales->getResult(); 

Hope this Hilfe

3

Sie sollten Ihre Querybuilder in Ihrem Repository erklären wie (createQueryBuilder Argument akzeptiert):

public function findOrdersByDate() 
{ 
    $qb = $this->createQueryBuilder('o') 
     ->orderBy('o.date', 'asc'); 

    return $qb 
     ->getQuery() 
     ->getResult(); 
} 

In Ihrem Controller:

$orderResult = $this->getDoctrine()->getRepository("AppBundle:Order")->findOrdersByDate(); 

EDIT: Wie Imanali Mamadiev hat hingewiesen: Ersetzen Sie "Order" durch nur "o", um SQL zu vermeiden Schlüsselwörter Konflikte