Modelとは

Pocket

CakePHPはMVCモデルを踏襲した設計のPHPフレームワークです。MVCにおけるModelはデータを管理する役割をする処理をさせる場所です。モデルがデータの保存、更新、選択を一手に引き受けることで、モデルをコールする側はデータの一貫性を保ちながら安心して利用する事ができます。

Modelは多くの場合Controllerから呼び出される事になります。例えば何かの一覧ページで合った場合を想定します。Controllerは受けたリクエストに応じて画面に表示するデータをViewに渡してやる必要がありますので、Modelに要求を出す事でModelが正しい情報を配列の形にして返却してくれます。

実際には、Modelの中ではDB接続を行いSelect文等を通じてデータを整形して呼び出し側(Controller等)に返却する事になります。

Modelには予めDBにアクセスするための基本的な処理を担当する関数が用意されています。単純な選択、保存、更新はこれらを使う事で容易に対応する事ができます。

  • 選択 |  Model::find($type, $query)
  • 保存、更新 | Model::save($data, $validate, $fieldList)

実際の場面では複雑なSelect条件に対応したり、データの構成を調整したりするために独自の関数を作成してその中でsaveやfindを駆使する事になります。

モデルを活かす

全く同じデータが多数の局面において使われる事が要求される場面はよくあります。例えば、画面に出している一覧とバッチ出力したcsv、APIで使うjsonなど、形式は違えど同じselect条件の元、同じ結果値のリストが要求されます。このとき、画面用のController、csv出力バッチ、json用APIでそれぞれselectしてデータ整形していてば冗長であるしバグが差異が出たりバグが潜む要員になるのは一目瞭然です。

DBからのデータ取得や整形を全てModelが行えば、Controllerやバッチ、APIは全てこのModelを利用するだけで同じ配列情報を取得できますので、あとは好きな形式に変換するだけでよくなります。

データを安全に保存する

Modelはデータの選択だけで利用されるわけではありません。データは保存する時にデータの不備がないかチェックする必要があります。Modelは予め設定しておく事で保存データのバリデーションも自動で行ってくれます。またその際のViewへのエラーメッセージ受け渡しなどの連携も行われます。

上手にModelを使ってスマートなコードを書きましょう。

記事が役に立ったらぜひシェアをお願いします。

Pocket