我希望获得列表用户,并且当前用户必须每次都是第一个。 在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
答案 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