在CakePHP中定制订单

时间:2012-10-25 13:35:07

标签: php cakephp cakephp-2.0

我在CakePHP中遇到问题

我有一个数组($ A)及其值

Array  // in $A
( 
    [0] => 3
    [1] => 4
    ...
}

控制器内部:

$conditions[]=array('Room.place_id' =>$A,'Room.status'=>'1');

$this->paginate= array(

                'limit' =>50,

                'recursive' => 2,

                'conditions' => $conditions,

                );

现在的结果是:

Array
(
    [0] => Array
        (
            [Room] => Array
                (
                    [id] => 1
                    [place_id] => 1
                    [type] => place
                 )
               )
    [1] => Array
        (
             [Room] => Array
                (
                    [id] => 2
                    [place_id] => 3
                 )
         ).
    ...

现在我想通过(在地方ID)使用$ A值...

订购

我希望第一张唱片成为房间[place_id] => 3(因为$ a [0] = 3)

第二个记录应该是[place_id] =>的房间。 4(因为$ a [1] = 4) 等等

2 个答案:

答案 0 :(得分:5)

在mysql中,您可以使用ORDER BY FIELD

按特定字段值排序
SELECT * FROM rooms WHERE place_id IN (3,1) ORDER BY FIELD(place_id, 3, 1);

这会按照您想要的自定义顺序订购您的房间(首先是place_id=3,然后是place_id=1)。

用蛋糕做:

$this->paginate= array(
   'order' => 'FIELD(Room.place_id, '.implode(',', $A).')',
   ...

我假设$A只包含数字,否则您将需要清理FIELD表达式中的值。

答案 1 :(得分:0)

field1将仅在顶部显示零值,您还可以在其他列上添加订单。

$this->paginate= array(
    'limit' =>50,
    'recursive' => 2,
    'conditions' => $conditions,
    'order' => "FIELD(field1, value) DESC , field2 DESC" // "FIELD(status, 2) DESC , id DESC"
);