0

ORDER BY尝试使用 Doctrine 2 ORM在 DQL 子句中实现动态排序时出现错误。

这是我的代码片段:

$queryBuilder = $categoryEntity->createQueryBuilder('category');

$queryBuilder->distinct();
$queryBuilder->join('Category\Entity\CategoryName', 'category_name', 'WITH', 'category.id = category_name.category');


if($column == 'status'){
    $queryBuilder->orderBy("category.status $order");
}else{
    $queryBuilder->orderBy("category_name.name $order");
}

这会产生以下错误:

[语法错误] 第 0 行,第 189 列:错误:预期的字符串结尾,得到 'ASC'

4

1 回答 1

6

正确的 API 是Doctrine\ORM\QueryBuilder#orderBy($field, $direction)

// assuming $order is either 'ASC' or 'DESC'

if($column == 'status'){
      $queryBuilder->orderBy('category.status', $order);
}else{
     $queryBuilder->orderBy('category_name.name', $order);
}
于 2013-02-25T16:53:58.930 回答