以下查询我想用来订购商店下订单的日期。我想按升序执行它们,但是当我尝试测试运行时,我收到以下错误:
[语法错误]第0行,第7行:错误:预期的IdentificationVariable | ScalarExpression | AggregateExpression |功能声明| PartialObjectExpression | “(”Subselect“)”| CaseExpression,得到了 '订单'
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('order');
$orderSales->orderBy('order.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();
我在.twig模板中渲染orderResult
return $this->render('admin/store/sales/adminsales.html.twig', array(
'orderResult' =>$orderResult
));
答案 0 :(得分:3)
您应该在存储库中声明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关键词冲突
答案 1 :(得分:2)
方法createQueryBuilder
不接受参数,因此请将您的别名放在select
方法中,如下所示:
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder();
$orderSales->select('order');
$orderSales->orderBy('order.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();
希望这个帮助
答案 2 :(得分:2)
在order
createQueryBuilder('order')
时出错
更改order
要强>
仅o
,例如createQueryBuilder('o')
<强>结果:强>
$orderSales = $this->getDoctrine()->getRepository("AppBundle:Order")->createQueryBuilder('o');
$orderSales->orderBy('o.date', 'asc');
$orderSales = $orderSales->getQuery();
$orderResult = $orderSales->getResult();