CakePHPでdistinctを使おうと思ってハマった

CakePHPでdistinctを使おうと思ってハマった

皆さん今日も元気にCakePHP使ってますかー?
今回はCakePHPでdistinctを使おうとしてハマったお話をしてみたいと思います。

array(
    'fields' => array('Model.id', 'Model.name'),
)

すっごく雑な断片ですが、まぁこんな感じで使ってたとするじゃないですか。
これにdistinctかけたいなーなんて思って

array(
    'fields' => array('distinct Model.id', 'Model.name'),
)

こんな風に書くじゃないですか。

はいアウトーっ!

CakePHPでは「DISTINCT」と必ず大文字で書く必要があります。

array(
    'fields' => array('DISTINCT Model.name', 'Model.id'),
)

つまりこう書かないとダメなのです。
ちなみに大文字で書かなかった場合、ものすごく謎なクエリが発行されます。

select `distinct Model`.`id`, `Model`.`name` from .....

あぁ、うん、そりゃできないよね・・・

ちなみにCakePHPの全Ver.に共通する話かどうかまでは調べていないので小文字で書いても大丈夫なケースもあるかと思います。

他にもハマった人がこの記事を参考にしてくれて小さな手助けになればいいな、と思いながら公開してみます。

TAG

  • このエントリーをはてなブックマークに追加
やまま
スペシャリスト やまま yamama

マンガとアニメとゲームから錬成された宇宙大好きエンジニア。 軌道エレベーターで行ける静止軌道上のコロニーに住まいを移し、ゲームやってマンガ読んでアニメ見て爆睡、ゲームやってマンガ読んでアニメ見て爆睡、という生活を夢見ながら今日もコードを書き続けるのだった。