[CakePHP] データの取り扱い

タグ :

CakePHPの基礎をまとめるシリーズです。
今回はデータの取り扱いについて簡単にまとめてみます。
CakePHPを使用する中で最も多用する処理といっても過言ではありません。

データの取り扱い

主に行う処理内容としては以下の流れになります。

  1. データベースからデータを読み込む。(Model, Controller)
  2. 読み込んだデータを変数にセット。(Controller)
  3. セットされたデータをHTMLで表示。(View)

データベース関係は出来るだけモデル内のPHPファイルにて処理するのが理想らしいです。
コントローラ内のPHPファイルには取得したデータの補正、並べ替えなどを記述します。
コントローラで変数にデータを格納した後、ビューへ渡され、表示が可能になります。

自分はモデルへの記述はBakeで生成された状態からほとんど触りません。
データベースのテーブルに変更があった場合や、新たなテーブルと関連付けさせたい場合などに変更が必要となる程度です。
データベースからデータを取得するには、

$this->(モデル名)->find('all', (パラメータ));

このコードを実行するだけで自動でSQLを発行し、データベースからデータを取得できます。
また、パラメータへ取得したい条件や取得順、取得数なども指定できます。
指定できるパラメータは以下、

  • ‘conditions’ // 検索条件
  • ‘recursive’ // 取得階層指定
  • ‘fields’ // 取得フィールド名
  • ‘order’ // 並び順指定
  • ‘group’ // GROUP BYのフィールド
  • ‘limit’ // 取得上限数
  • ‘page’ // ページ
  • ‘offset’ // オフセット
  • ‘callbacks’ // falseの他に’before’、’after’を指定

また、コントローラからビューへ値を受け渡すには、

$this->set('value', $value);

上記で受け渡されたデータはビュー内で「$value」として使用することができます。

補足

データ取得処理はモデルへ記述するのが理想とされているらしいですが、自分はコントローラへ記述しちゃっています。
モデルへはデータベースの関連付けや構造を示す設定のみとして、構成を分かり易くしたいと思ったからです。

モデルへデータ取得処理を記述するということは、コントローラへの値渡しを必要とするため変数を余分に必要とすることになると思うのですが、、、さらにメソッドチェーンなどを利用するなら尚更コントローラへの記述が良いような、、、

ですが、モデル、コントローラ、ビューの処理量のバランスを考えると、データ関係は全てモデルへ記述する方が良い気もします。
んー、その辺はまだまだ理解が足りていないので、実用性、拡張性、可変性などを考慮しつつ、これからじっくりと検証していきたいと思います。

Share

  • このエントリーをはてなブックマークに追加

Comment

コメントを残す

*がついている欄は必須項目です。

  • Twitter
  • Facebook
  • Google Plus
  • RSS Feed