2012-05-08 1 views
5

У меня есть запрос DQL любит это:Заказать DQL Регистрация по количеству на assiociation

$dql = "SELECT p, count(u.id) as ucnt FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY ucnt"; 
$query = $this->_em->createQuery($dql); 

Вопрос в том, как я могу провести на сортировку по количеству, но не получают их в результате? Я хочу получить только проекты, отсортированные по счету, а не массивы с [project] и [ucnt].

ответ

5

Начиная с доктриной 2.2 (source):

SELECT a, COUNT(b.id) AS HIDDEN c [...] ORDER BY c 
+0

Я попробую, так как на данный момент мое решение заключалось в том, чтобы добавить счетчик к сущности, а затем заказать его, но HIDDEN выглядит намного приятнее :-) –

+0

Спасибо, мужчина! Ты действительно помог мне. –

-1

Try:

$dql = "SELECT p FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY count(u.id)"; 
$query = $this->_em->createQuery($dql); 
+0

Да, я пытался, он выдает ошибку: Сообщение: [Ошибка синтаксиса] строки 0, Col 72: Ошибка : Ожидаемый конец строки, got '(' –

+0

Но в этом случае вы можете выбрать 2 значения и после этого игнорировать значение счетчика в PHP-коде. –

+0

Я не могу, beacose это возвращает синтаксическую ошибку. Я знаю, что могу изменить порядок массива в PHP, но это не кажется изящным решением, должен быть способ получить только проу jcts без счета, все еще заказанного им. –