我在尝试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'
正确的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)
| 归档时间: |
|
| 查看次数: |
1455 次 |
| 最近记录: |