11

According to DDC-2204 issue which states

[Order by With Equals] is supported by including the condition in the SELECT clause, aliasing it, then using it. You might need to use "AS HIDDEN name" to prevent it from appearing in the result

following DQL should be possible:

SELECT main.id = 1 AS test FROM Entity main ORDER BY test

However, when I try this (using 2.4), I get

Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '='

It seems the developer-advised method of putting the condition into SELECT does not work. Is this a bug and / or is there another way of selecting and / or ordering by condition.

Olia.Bn
  • 190
  • 9

2 Answers2

4

It is possible to use case statement:

SELECT (CASE WHEN main.id = 1 THEN 1 ELSE 0 END) AS test FROM Entity main ORDER BY test

Aurelijus Rozenas
  • 2,176
  • 2
  • 28
  • 40
0

I'm not sure, if I understand that article correctly, but it seems to refer to using the condition in the order by clause:

SELECT main.id AS test FROM Entity main ORDER BY test = 1
RoToRa
  • 37,635
  • 12
  • 69
  • 105
  • ... which doesn't work in Doctrine and the proposed solution - putting it in SELECT clause - does not either, apparently. – Olia.Bn Sep 10 '14 at 13:52