订单日期查询,语法错误

时间:2016-04-04 09:28:52

标签: php symfony doctrine-orm query-builder dql

以下查询我想用来订购商店下订单的日期。我想按升序执行它们,但是当我尝试测试运行时,我收到以下错误:

  

[语法错误]第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
    ));

3 个答案:

答案 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();