我昨天要求这个:
SQL Ordering Data from row "n+1" to "n-1"
但是我使用的是doctrine2,在DQL中,Case语句不可用。那么如何在DQL中执行此操作?
谢谢 !
(我在symfony2中使用了学说)
最佳答案
从数据库中获取第n个对象。
从按ID排序的数据库中获取所有对象。
在PHP端对它们进行排序:
<?php
$objects = range(1, 10); // objects from 2nd point
$object = 6; // object from 1st point
$result = $higher = $lower = array();
foreach ($objects as $o) {
if ($o < $object) {
$lower[] = $o;
} else if ($o > $object) {
$higher[] = $o;
}
}
$result = array_merge($higher, $lower);
print_r($result);
输出:
Array
(
[0] => 7
[1] => 8
[2] => 9
[3] => 10
[4] => 1
[5] => 2
[6] => 3
[7] => 4
[8] => 5
)
可以更短,更有效地完成它,但是除非您要对数百个对象进行排序,否则没有关系。至少代码是简单且易于维护的。
关于mysql - 在Doctrine2中从n + 1到n-1的订购日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17131839/