我在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) 等等
答案 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"
);