Doctrine 是否能够按特定值对结果进行排序?
我会尝试做这样的事情..
$queryBuilder->addOrderBy($queryBuilder->expr()->eq('t0.ID',$ID));
$queryBuilder->addOrderBy('t0.ID');
要获得类似此查询的结果。
select ID from test order by ID = '1234', ID;
异常(exception):
Syntax Error line 0 col 72: Error: Expected end of string got '='
我也尝试过使用 FIND_IN_SET 但这也不起作用。
有人可以帮帮我吗?
最佳答案
您可以添加 Doctrine extension (this 如果您使用的是 Symfony)这样您就可以使用 MySql IF
语句,然后在您的查询中您可以:
$qb->addSelect('IF(t0.ID = 1234, 1, 0) AS HIDDEN mainSort')
然后你可以使用它来排序
$qb->orderBy('mainSort', 'DESC');
更新
如果你不想添加 Doctrine 扩展,你可以使用普通 SQL 的 CASE
语句,这样:
$qb->addSelect('(CASE WHEN t0.ID = 1234 THEN 1 ELSE 0 END) AS HIDDEN mainSort')
关于mysql - Doctrine2 OrderBy 具体值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18099163/