Индекс Symfony2 объекта, отсортированного по DQL

1

Привет, я сделал простой запрос для механизма ранжирования с построителем запросов.

        $result = $qb
            ->select('u')
            ->where('u.status = 1')
            ->from('PGMainBundle:User', 'u')
            ->groupBy('u.id')
            ->addSelect('COUNT(c.id) as HIDDEN nChallenges')
            ->leftJoin('u.challenges', 'c', 'WITH', 'c.closed = 1' )
            ->add('orderBy','u.points DESC, nChallenges DESC')
            ->orderBy('u.points', 'DESC')
            ->addOrderBy('nChallenges', 'DESC')
            ->setFirstResult($offset*50)
            ->setMaxResults(50)
            ->getQuery()
            ->getResult();

Теперь, пока мой механизм ранжирования работает нормально, я хотел бы проверить, что у пользователя loop.index есть идентификатор $ id.

Сказанное это, я не хочу использовать цикл foreach для результата для этого.

Существует ли более оптимальный способ вернуть "позицию" в рейтинге?

Возможно, с помощью построителя запросов?

Теги:
doctrine-query
query-builder

1 ответ

1
Лучший ответ

Результатом должен быть массив, поэтому вы можете получить индекс данного элемента следующим образом:

$result->indexOf($yourelement)

Иначе, если ключи не в порядке, но являются идентификаторами объектов:

  $keys = $result->getKeys();
  $id = $yourElement->getId();
  $position = array_search($id, $keys);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню