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

CakePHP CakePHP
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();とかで呼べる。

CakePHP
スポンサーリンク
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
この記事を書いた人

スパイスファクトリー株式会社 Webエンジニア。フロントエンドやWebサイトの高速化が得意です。インフラ・バックエンドも一通りやってます。
個人的なお仕事のご依頼や情報交換などはお問い合わせまたはTwitterにメンションをお願いします。

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

コメント

タイトルとURLをコピーしました