Doctrine2 комплексное упорядочение - PullRequest
1 голос
/ 13 сентября 2011

У меня есть таблица комментариев, и каждый комментарий имеет статус «одобрен», «ожидает модерации», «скрыт». Когда я показываю комментарии, я хочу, чтобы они были отсортированы в соответствии с их статусами - «утвержден», затем «ожидает модерации», затем «скрыт». Я могу сделать это с UNION, но это плохое решение с точки зрения производительности.

Интересно, существует ли эквивалент Doctrine2 для "ORDER BY (status <> 'hidden') DESC"? Я знаю об упорядочении по вычисляемым полям ( Может ли Doctrine2 @OrderBy вычислить поле? ), но не вижу, как его здесь применить.

Ответы [ 2 ]

1 голос
/ 30 января 2012

Существует выражение CASE и ключевое слово HIDDEN, если вы используете 2.2:

Начиная с Доктрина CaseExpression EBNF , вы можете использовать

SELECT c, CASE WHEN (c.status = 'hidden') THEN 1 ELSE 0 END AS HIDDEN sortValue FROM Comment c ORDER BY sortValue DESC

0 голосов
/ 04 января 2012

Вы решили эту проблему? Другой способ сделать это - выполнить SQL-запрос, в котором вы задаете значения для статуса, и, если хотите, упорядочивать их по этому адресу.

$ conn = $ entity_manager-> getConnection (); $ stmt = $ conn-> query (" Выбрать d. *, статус дела, когда «утвержден», то 1 когда «в ожидании модерации», то 2 когда «скрыто», то 3 конца последовательности из таблицы по порядку «);

Просто петлю кинул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...