如何使用Doctrine将变量传递给Orderby子句

时间:2013-02-25 16:40:43

标签: doctrine-orm

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

这是我的代码段:

$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'

1 个答案:

答案 0 :(得分:5)

正确的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);
}