IF语句按照Doctrine 2查询Symfony 2的条款顺序排列

Lou*_*wki 4 mysql doctrine symfony

我试图做一个显示所有评论的博客,用户将能够在以前发布的评论中发表回复评论否订购然后在sql查询中,以便他们将按顺序显示我不断收到错误.

SELECT c.userid, c.comment, c.reply, u.username, c.createdat, c.image, c.username as
ComUser FROM Bundle:Comments c LEFT JOIN Bundle:Users u WITH c.userid = u.id
WHERE c.articleid = 1 ORDER BY (CASE WHEN (c.parentid = 0) THEN c.id ELSE c.parentid END) 
c.createdat ASC
Run Code Online (Sandbox Code Playgroud)

给出错误:[语法错误]第0行,第515行:错误:字符串的预期结束,得到'CASE'

甚至试过正常的方式

ORDER BY IF(c.parentid = 0, c.id, c.parentid), c.createdat ASC
Run Code Online (Sandbox Code Playgroud)

给出错误:[语法错误]第0行,第515行:错误:字符串的预期结束,得到'('

当我在正常的sql代码(不是教条)中使用正常的ORDERY BY IF()时,它工作正常.

Mat*_*che 6

看起来你只是有一个错字.您的整体语法是正确的.

ORDER BY CASE WHEN (c.parentid = 0) THEN c.id ELSE .parentid END c.createdat ASC
Run Code Online (Sandbox Code Playgroud)

应该

ORDER BY CASE WHEN (c.parentid = 0) THEN c.id ELSE c.parentid END, c.createdat ASC
Run Code Online (Sandbox Code Playgroud)