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 値を使用して (インプレース ID) で注文したい ...

最初のレコードを [place_id] => 3 の Room にしたい ($a[0] = 3 のため)

2 番目のレコードは [place_id] => 4 ($a[1] = 4 のため) の Room である必要があります。

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 に答える