Обратный порядок Doctrine_Collection

Я ищу чистый способ изменить порядок Коллекция Doctrine_Collection. Я знаю, это звучит странно, поэтому позвольте мне объяснить мою (простую) цель: мне нужно отобразить x последнюю/новейшуюзапись, но я должен отобразить ее в обратном порядке: самая старая первая и т.д.

Если непонятно, вот пример: Допустим, у меня есть это в моей таблице (давайте назовем это «примером»):

id      date
1       2012-01-21
2       2012-03-19
3       2012-02-21
4       2012-03-21

До сих пор я сделал это:

Doctrine::getTable('Example')->createQuery('d')
    ->orderBy('date DESC')
    ->limit(3);

Что возвращает это

id      date
4       2012-03-21
2       2012-03-19
3       2012-02-21

Но я хочу это:

id      date
3       2012-02-21
2       2012-03-19
4       2012-03-21

Изменить:

Я нашел решение этой проблемы, используя промежуточный массив и используя для него array_reverse. Но это выглядит не очень хорошо :(

Вот код, который я написал:

    $query = Doctrine::getTable('Example')
            ->createQuery('e')
            ->orderBy('date DESC')
            ->limit(3)
        $collection = $query->execute();

        //Here is the dirty hack:
        $itemArray = array();
        foreach ($collection as $item) {
            $itemArray[] = $item;
        }
        $itemArray = array_reverse($itemArray);
        $orderedCollection = new Doctrine_Collection($doctrineClass);
        foreach($itemArray as $item) {
            $orderedCollection->add($item);
        }
        //OrderedCollection is OK but... come on! There must be a cleaner way to do it

Редактировать 2: ответ от @Adam Kiss

        $query = Doctrine::getTable('Example')
            ->createQuery('e')
            ->orderBy('date DESC')
            ->limit(3)
        $collection = $query->execute();

        //Here is the **lovely** hack:
        $orderedCollection = new Doctrine_Collection('Example');
        for ($i=($collection->count() - 1); $i>=0;$i--) {
            $orderedCollection->add($collection->get($i));
        }
12
задан haltabush 28 March 2012 в 15:27
поделиться