Doctrine2 OrderBy具体值

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,但这也不起作用.

有人能帮助我吗?

ale*_*x88 6

您可以添加学说扩展(这如果您正在使用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)