Doc = 1的学说顺序

时间:2014-02-03 15:10:38

标签: php mysql zend-framework doctrine-orm sql-order-by

我希望获得列表用户,并且当前用户必须每次都是第一个。 在MySql中我可以作为:

SELECT * FROM `user` ORDER BY id = 2 DESC

在学说中,我试着做同样的事情:

 $query = $this->_em->createQuery("SELECT bul, u, c FROM 'Building\Entity\BuildingUserLink' bul JOIN bul.building b JOIN bul.company c JOIN bul.user u WHERE b = :building_id ORDER BY u.id = :current_id DESC");
 $query->setParameters(array('building_id' => $building_id, 'current_id' => $current_id));
 return $query->getResult();

但我收到错误 - “预期结束字符串,得到\ u0027 = \ u0027 \”

我的错是什么?

PS我使用ZF2 + DOctrine

2 个答案:

答案 0 :(得分:0)

SELECT * FROM `user` ORDER BY id = 2 DESC, id DESC

在您的实际查询中:

ORDER BY u.id = :current_id DESC, u.id DESC

答案 1 :(得分:0)

这可以使用MySQL中的FIELD函数来完成。可以使用https://github.com/beberlei/DoctrineExtensions将对FIELD函数的支持添加到学说中。

查询将是:

SELECT * FROM `user` ORDER BY FIELD(id, 2) DESC