読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

【MySQL & CakePHP2.x】任意の順番でソートしたい時

SQL MySQL CakePHP CakePHP2.x

スポンサードリンク

「順番を1、2、3ではなくて、2,3,1にしてほしい」

順番がゲシュタルト崩壊(?)

データベース設計時、ここは順番が変わるかもしれない。ってどうやって予想すればいいかな。確かに順番が必要、って最初からわかっていたら、ソートキーのカラムを作れば回避できると思うけど。

さてさて、その順番を任意の順番に変更したい場合、どうすればいいんやと思ったけど、探したらあった。

MySQLで任意の順番でソートする : Nacky - Snowland.net

ありがとうございますm(_ _ )m

mysql> select 
  table1.type 
from 
  table1 
order by field(type,2,5,3);
+------+
| type |
+------+
|    2 |
|    2 |
|    2 |
|    2 |
|    2 |
|    5 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
|    3 |
+------+

しゅごい。。。

これをCakePHP2.x側でどうやって実装するのか。

まぁ普通に考えつくのがこれだよね。

<?php
// ... 省略
$queryParameter = array(
    'order' => array(
        'field(type,2,5,3)'
    )
);

$data = $this->Table1->find('all', $queryParameter);

これでおkです。うまくいきました。