【CakePHP2.x】レイアウトからモデルを使う2014-12-05

モデルへのアクセスはコントローラーで行うべきというご意見が多いが、
全ページ共通でデータベースからのデータを取り込むような時は
各コントローラーにいちいち書くのも面倒だし、
訂正する場合は該当するコントローラーすべてを修正するはめになる。
なので、レイアウトからモデルを使ってみた。
(ビュー、エレメントからでもできる)

【レイアウトに記述】
 App::import('Model', 'Hoge');  //Hogeはモデル名
 $hoge = new Hoge();                  //Hogeのインスタンスを作成
 $data = $hoge->find('all');          //findメゾッドでデータ取得

これで、展開する箇所に

foreach($data as $row){
  echo $row["Hoge"]["id"];
  echo $row["Hoge"]["fieldname"];
}

と書けばいいことがわかった。

尚、$dataのvar_dumpの結果は下記のとおり

var_dump($data);
   ↓
array(1) {
     [0]=> array(1) {
           ["Hoge"]=> array(2) {
                ["id"]=> string(1) "1"
                ["fieldname"]=> string(6) "データソース"
          }
     }
}