php – 颠倒Doctrine_Collection的顺序

我正在寻找一个干净的方式来扭转Doctrine_Collection的顺序.
我知道这听起来很奇怪,所以让我解释一下我的(简单的)目标:我需要显示x最新/最新的记录,但是我必须按相反的顺序显示:最旧的1等

如果不清楚,这里是一个例子:
让我说我有这个在我的表(让我们称之为’示例’):

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亲吻回答

$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));
        }
没有中间阵列:
for($i=$collection->count(); $i>0; $i--){
  $orderedCollection->add($collection->get($i);
}

希望好回答:

您可以将集合导出到数组并将其反转

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

老(错)答案:

也许你应该使用

Doctrine::getTable('Example')->createquery('d')
  ->orderBy('date ASC')
  ->limit(3);

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...