我昨天要求这个:
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/

10-09 16:13