mysql - Doctrine2 OrderBy 具体值

标签 mysql doctrine-orm doctrine

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/

相关文章:

mysql - 在where子句中操作字符串

php - 如何在 DBALException 后重新打开 Doctrine Entity Manager

symfony - 返回 PersistentCollection 而不是 ArrayCollection

php - 你对 Doctrine ORM 有什么体验?

php - 使用 for each 循环在 MySQL 数据库中插入多个图像

php - Codeigniter 无法从数据库表中获取所有数据

Symfony - 在 Doctrine EntityRepository 中注入(inject)和访问 DIC 服务

mongodb - Doctrine2 ODM - 对象(或嵌入式文档)作为_id

php - Doctrine 2继承映射找不到基表或 View

不使用 having 的 mysql 计数