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
                 )
         ).
    ...

现在我想使用 $A 值(在 Place id 中)订购...

我希望第一条记录是 [place_id] => 3 的房间(因为 $a[0] = 3)

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

4

2 回答 2

7

在 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表达式的值。

于 2012-10-25T14:42:33.313 回答
1

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

$this->paginate= array(
    'limit' =>50,
    'recursive' => 2,
    'conditions' => $conditions,
    'order' => "FIELD(field1, value) DESC , field2 DESC" // "FIELD(status, 2) DESC , id DESC"
);
于 2016-06-16T09:11:49.760 回答