[CakePHP]独自SQLを使うとき出力データのモデル名を大文字に変更する方法

CakePHPで独自のSQLを使うと、CakePHPの通常出力と違ったデータが出力されます。

CakePHPではテーブル名を小文字複数形(posts)で作っておき、モデルやコントローラーでテーブルを利用するときは初めが大文字、2文字目以降は小文字、単語は単数形で扱うようになっています。

CakePHPモデルによる出力データは [Post]というキーですが、独自のSQLだと「posts」というキーになってしまいます。
両方が混在するとViewでデータを出力するとき面倒なので、統一しておいた方が良いですね。
テーブル名にエイリアスを使えば簡単に実現できます。

SELECT * FROM  `posts` as `Post`
独自のSQL(エイリアスを使わない場合)
Array
(
    [0] => Array
        (
            [posts] => Array
                (
                    [id] => 1
                    [name] => あああ
                )
        )
    [1] => Array
        (
            [posts] => Array
                (
                    [id] => 2
                    [name] => いいい
                )
        )
)
独自のSQL(エイリアスを使った場合)
Array
(
    [0] => Array
        (
            [Post] => Array
                (
                    [id] => 1
                    [name] => あああ
                )
        )
    [1] => Array
        (
            [Post] => Array
                (
                    [id] => 2
                    [name] => いいい
                )
        )
)

このようにエイリアスをつけるだけで、デフォルトのCakePHPと同じ形でデータが出力され、幸せになれます。



Author: webmaster