このエントリーが役に立ったらシェアをお願いします!

[CakePHP]モデルの空配列を返す関数

このエントリーが役に立ったらシェアをお願いします!

今回はモデルからレコードのカラムをキーとする配列を取得する関数をご紹介します。

CakePHPでの開発で入力フォームを作ってると、モデルの値が渡ってなかったりして
NOTICEで「んな変数ねーよ!」って怒られたりする時がある。
NOTICEだから無視しても大丈夫といえば大丈夫だけど、
毎度毎度怒られるのはあまり気持ちがよくない。(バグの原因にもなるし)

Cake自体にモデルの空配列を一括で渡してくれるようなAPIがあるっしょ!
・・って思ったけど意外とないものである。

ということで作ったのがこいつ。
こいつをAppModelにぶち込んで完成。

/**
 * モデルの空配列を返します。
 * @return array モデルの空配列
 */
function getModelArray() {
    //モデルの名前を取得
    $model = get_class($this);
    //カラムタイプの配列からキーのみを取得
    $keys = array_keys($this->getColumnTypes());
    //配列を空文字で埋める
    $arr[$model] = array_fill_keys($keys,'');
    return $arr;
}

空文字じゃなくてFALSEでもいいし、0でもいいし、各自お好みで。

<仕組み>
ModelクラスのもつgetColumnTypes関数でテーブル上のカラムが
array(カラム名→データ型)という形で返ってくる。
そいつのキーを取り出して、array_fill_keys関数で一個一個に空文字を入れて完成。
仕上げにクラス名(AppModelを継承したModel名)を取得して、
配列をお決まりの形↓にする。

array('モデル名' => array('カラム名' => '','カラム名' => ''));

Controllerで使う時に$this->MyModel->getModelArray();とかで呼べる。

スポンサーリンク

このエントリーが役に立ったらシェアをお願いします!

1この記事を書いた人
ShoheiTai
フロントエンド志向のWebエンジニア。
HTML5やWeb高速化、SEO等のフロントエンド開発が大好物。
バックエンドではCakePHP,Wordpress開発を主戦場としています。
Web開発のスパイスファクトリー株式会社創業メンバー。

イケてないコード - Webエンジニアのブログの
最新情報をいいねしてチェックしよう!
スポンサーリンク