CakePHP 9日 


幸い、前回からあまり間をおかずに、CakePHP に触れる機会ができたので、さっそくフォームから投稿してDBを書き換える方法を確認してみる。

CakePHP は、モデルで指定したテーブルを使うと便利にできているが、既存のシステムの置き換えとか考えると、テーブル名をあわせるのは難しい。それに、大量のデータを毎回参照するとなるとサーバーの負担となる。
ということで、SQLのクエリーを使ったやり方で、確認を行う。

まず、テストのDBを作成。
さらに、これを表示するビューを作成。ここから、投稿フォームのページを呼び出すリンクを設定し、CakePHP のビューを新規に作成する。

まず、投稿フォームから。
こっちは、コントローラで、SQLを実行し、その結果をビューに受け渡す。
マニュアルでは、テーブル名で配列を参照できるように書いてあったが、DBがPostgreSQL のせいか、うまく参照できない。
なので、コントローラ内で、ビューに受け渡す配列をいったん作成し、それを受け渡すようにした。ここは、いまいちかな。

変数の受け渡しでうまくいかなかったので、かなり時間がかかってしまったが、投稿フォームのビューが完成。

次に、投稿したデータをDBに書き込みする処理。
これは、コントローラ側に記述する。
PHPの投稿された変数を参照する機能を利用し、SQLを作って update を実行する。すぐに、select で変更したデータを参照し、変更結果をビューを反映させる。

これで、投稿フォーム関係が完了。

MVCモデルなので、DB、コントロールのプログラム、ビューを別々にできるのは、わかりやすくていい。
DBの要素名と、コントローラからビューに渡される変数名を予め決めておけば、開発がやりやすいということが理解できた。
これが、PHPでゼロから開発していると、勝手に仕様を変えられる自由があるものの、後で見た場合、よく解らない、というデメリットがあった。MVC方式の CakePHP だと、この辺がきっちり管理できる。

次回は、もうちょっと上級の試みができるといいな、と思う。