尝试使用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'
答案 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);
}