CakePHP : フォーラムを作る - モデルの作成
本業も絡めて作ってみたいものはいろいろあるのですが(フォーラム,ToDo,施設予約,電話の受付連絡・・・)
とりあえず、フォーラムに挑戦してみます。
CakePHP は、MVC(Model View Controller)という考え方を採用しておりアプリケーションを構築する上での 役割を 3 つに分けています。
モデルは、ビジネスロジックを担当すると紹介され、CakePHP でも同様にアプリケーションに必要な ロジックを実装しデータベースのテーブルと対応します。
参考:「MVC モデルとは何ですか・・・」など
CakePHP の規約
CakePHP の命名規約では、モデルのクラス名を単数形とし対応するテーブル名を複数形とします。 例えば、フォーラムの投稿を保存するテーブルに discussions と名前をつけた場合、対応するモデルは Discussion となります。
今回使用するような category などは categories で対応でき、Inflector というクラスで変換が行われているようです。
また、モデルのクラス名は大文字で始めるという規約になっています。
カテゴリーのモデルとデータベース
カテゴリーを格納するテーブルは、次のようにします。
CREATE TABLE categories (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(128) NOT NULL DEFAULT '',
description TEXT DEFAULT NULL,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
INSERT INTO categories (name,description) VALUES ('php','phpに関する話題');
INSERT INTO categories (name,description) VALUES ('VB','Visual Basicに関する話題');
CakePHP の規約では、プライマリーキーは必ず「id」という項目名にします。また、「created」「modified」 という項目を設定することで自動的に作成日と更新日を登録してくれます。
次にモデルを作成します。
モデルは、CakePHP の規約に従い Category というクラス名で app/models/に category.php という名前で作成します。 モデルを作成するには、AppModel から派生し次のようなクラスを作成します。
<?php
class Category extends AppModel
{
var $name = 'Category';
}
?>
これがモデルの基本となります。