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';
}
?>

これがモデルの基本となります。