我正在寻找一个干净的方式来扭转Doctrine_Collection的顺序.
我知道这听起来很奇怪,所以让我解释一下我的(简单的)目标:我需要显示x最新/最新的记录,但是我必须按相反的顺序显示:最旧的1等
我知道这听起来很奇怪,所以让我解释一下我的(简单的)目标:我需要显示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);
原文地址:https://www.jb51.cc/php/131980.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。