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

noo*_*php 0 doctrine-orm

我在尝试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");
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

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

Ocr*_*ius 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);
}
Run Code Online (Sandbox Code Playgroud)