订单日期查询,语法错误

order date query, syntax error

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

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

我在 .twig 模板中渲染 orderResult

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

方法 createQueryBuilder 不接受参数,所以将您的别名放在 select 方法中,如下所示:

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

$orderSales->select('order');

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

希望对您有所帮助

您应该在存储库中声明您的 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 指出的那样:将 "order" 替换为 "o" 以避免 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();