CakePHP でvarchar型に入った数字を上手にSortする方法 ITかあさん

ITかあさん

CakePHP でvarchar型に入った数字を上手にSortする方法

大人の事情により、varchar型のままのフィールドにINTが入っているケース。。

cakephp Config

INT型に変えろ とか言わないで。分かっているけど出来ない大人の事情。。

SQLでcastを使う方法もあるようですが、今回はcastを使わず、しかもCakePHPのpagenateSortにも対応出来ちゃう裏技的方法。

virtualFields使えばいいじゃないの!

CakeのvirtualFields使ったことある方ならもう見出しだけでお分かりですね!virtualFieldsを指定して、その子がINTとなるようにしてあげればよいんです。

public $virtualFields = array(
    'field' => '(Model.OriginallyFieldNameHere + 0)',
);

virtualFieldsで指定したフィールド名でpagenateSortもできました!

echo $this->BootstrapPaginator->sort('Model.field', 'ソート');
初夏のJavaScript祭 in サーキュレーションビル ForPro