php 顺序颠倒,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));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值