Номер строки в запросе Symfony Doctrine - PullRequest
3 голосов
/ 09 июня 2011

Я храню данные о времени прохождения круга в базе данных, данные состоят из расстояния, времени, средней скорости и максимальной скорости.

Я пытаюсь отобразить таблицу лидеров, в которой указаны первые десять человек в любом заданном вами запросе (кто оказался самым дальним, лучшее среднее время и т. Д.). Тем не менее, ниже первой десятки я хочу показать пользователя, который вошел в позицию в таблице лидеров. Для этого я пытаюсь выполнить тот же запрос, упорядочив свои результаты и добавив НОМЕР СТРОКИ, чтобы получить позицию.

Я использую Symfony 1.4 с Doctrine ORM и не могу понять, как получить номера строк в запросе. Я знаю, что вы можете сделать это в SQL следующим образом:

SELECT full_name, ROW_NUMBER() OVER(ORDER BY distance) AS row_number

И все же я не могу заставить его работать в доктрине Symfony.

У кого-нибудь есть идеи, как мне это сделать? (или даже другой способ сделать это)

Заранее спасибо.

1 Ответ

0 голосов
/ 10 июня 2011

Хорошо, вот мое решение:

Я нашел ответ на этот вопрос после нескольких экспериментов и совместной работы.

Я избавился от выбора и просто возвратил упорядоченный список.результатов;

$results = self::getInstance()->createQuery('r')
    ->orderBy('r.distance')
    ->execute();

Затем я скопировал этот результат в массив и использовал array_search (), чтобы найти ключ результата в массиве (к счастью, здесь я возвращаю пользовательские данные, и я знаю, что пользователь Iв массиве)

$index = array_search($user->toArray(), $results->toArray());

Затем я могу вернуть $ index + 1 , чтобы дать мне позицию пользователя в таблице лидеров.

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

Если у кого-то есть лучшее решение, пожалуйста, поделитесь.

...