Sti*_*985 3 mysql doctrine doctrine-orm
Doctrine能否按特定值对结果进行排序?
我试着做这样的事情..
$queryBuilder->addOrderBy($queryBuilder->expr()->eq('t0.ID',$ID));
$queryBuilder->addOrderBy('t0.ID');
Run Code Online (Sandbox Code Playgroud)
要获得类似这样的查询,将返回.
select ID from test order by ID = '1234', ID;
Run Code Online (Sandbox Code Playgroud)
例外:
Syntax Error line 0 col 72: Error: Expected end of string got '='
Run Code Online (Sandbox Code Playgroud)
我也尝试使用FIND_IN_SET,但这也不起作用.
有人能帮助我吗?
您可以添加学说扩展(这如果您正在使用Symfony的),所以你可以使用MySQL的IF语句,那么在您的查询,您可以:
$qb->addSelect('IF(t0.ID = 1234, 1, 0) AS HIDDEN mainSort')
Run Code Online (Sandbox Code Playgroud)
然后你可以用它来排序
$qb->orderBy('mainSort', 'DESC');
Run Code Online (Sandbox Code Playgroud)
更新
如果您不想添加Doctrine扩展,可以使用CASE常规SQL语句,这样:
$qb->addSelect('(CASE WHEN t0.ID = 1234 THEN 1 ELSE 0 END) AS HIDDEN mainSort')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |