LoginSignup
2
2

More than 5 years have passed since last update.

CakePHP3 大文字と小文字を区別せずにsortする

Last updated at Posted at 2016-08-16

CakePHP3 で、大文字と小文字を区別せずにsort する方法

大文字と小文字を区別せずにsort したかった。

まずは例。

例1

id fruits
1 Apple
2 Orange
3 Peach
4 apple
5 orange
6 peach

View で例1 みたいな感じに並んでいたとする。

これを

例2

id fruits
1 Apple
4 apple
2 Orange
5 orange
3 Peach
6 peach

例2 みたいにしたい!

ということで、調べた。(教えてもらった)

方法は、

view側。つまりhoge.ctpで、


$this->paginator->sort('lower(fruits)')

と書く。

lower() で、 全部小文字に変換してからSELECTしているらしい(SQLの話)

その後、Controller 側で、

$paginate = [
    // 'limit' => 10,
    'sortWhitelist' => [
        'lower(fruits)'
    ],
]

という感じで sortWhitelist という配列に lower(fruits) という文字列を突っ込む!

sortWhitelistに関しては、こちらを参照!

これにて完成!

ちなみに、 sortWhitelist を使うときは、

sort の対象となる文字列を全部突っ込まなくてはならないらしい。
つまり、初期条件としてid 降順を指定する場合、

$paginate = [
    // 'limit' => 10,
    'order' => ['id' => 'asc'],
    'sortWhitelist' => [
        'lower(fruits)', 'id'
    ],
]

みたいな感じで書かなくてはならない。
地味にハマりそうなので、頭の片隅に置いておいて下さい!

以上!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2