下面的查询我想用来排序商店下订单的日期。我想按升序进行,但当我尝试测试运行时,我会收到以下错误:
[语法错误]第0行,第7列:错误:需要IdentificationVariable|ScalarExpression | AggregateExpression | FunctionDeclaration|PartialObjectExpression |"("Subselect")"|CaseExpression,得到"订单"
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('order');
$orderSales->orderBy('order.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();
我在.titch模板中呈现orderResult
return $this->render('admin/store/sales/adminsales.html.twig', array(
'orderResult' =>$orderResult
));
您应该在存储库中声明您的QueryBuilder,例如(createQueryBuilder接受参数):
public function findOrdersByDate()
{
$qb = $this->createQueryBuilder('o')
->orderBy('o.date', 'asc');
return $qb
->getQuery()
->getResult();
}
在您的控制器中:
$orderResult = $this->getDoctrine()->getRepository("AppBundle:Order")->findOrdersByDate();
编辑:正如Imanali Mamadiev所指出的:用"o"替换"order"以避免SQL关键字冲突
在createQueryBuilder('order')
中使用单词order
时出错
更改order
到
仅o
,例如createQueryBuilder('o')
结果:
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('o');
$orderSales->orderBy('o.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();
方法createQueryBuilder
不接受参数,所以将您的别名放在select
方法中,如下所示:
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder();
$orderSales->select('order');
$orderSales->orderBy('order.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();
希望这能帮助