scaffoldで簡単にテーブル管理画面を作成(CakePHP修行 #4)

前回作成したSQLでデータベースとテーブルを作成したので、ここでscaffoldを試してみます。

app/config/database.php(database.php.defaultをコピー)

var $default = array('driver' => 'mysql',
    'connect' => 'mysql_connect',
    'host' => 'localhost',
    'login' => 'root',
    'password' => 'xxxxxx',
    'database' => 'clbs',
    'prefix' => 'clbs_');

app/models/schedule.php

< ?php
class Schedule extends AppModel{
    var $name = 'Schedule';
}
?>

app/controllers/schedules_controller.php

< ?php
class SchedulesController extends AppController{
    var $name = 'Schedules';
    var $scaffold;
}
?>

たったこれだけで、「http://localhost/schedules」にアクセスしてみるとSchedulesテーブルのデータ管理画面がscaffold機能で自動生成されていました。めちゃめちゃ簡単ですね!どんな管理画面が表示されるのかは、実際に試してご確認ください(^-^;)

DBテーブル構成を考えつつMYSQLを書いてみた(CakePHP修行 #3)

DBテーブル作成のためのCREATE TABLE文をとりあえず作ってみたので、晒してみます。そのうちER図作成ツールを使ってきれいにまとめたいです。テーブル構造はこんな感じです。

  • SCHEDULE … イベントスケジュール
  • USER … ユーザー情報
  • GROUP … グループ情報(管理者/一般メンバー等)
  • HOLIDAY … 祝日情報
  • ENTRY_USER … ユーザー出欠情報
  • PICTURE … イベント写真情報
  • FREETALK … フリートーク

(※追記:2008/6/30)

mySQLでコメントに「–」が使えないことが判明orz。

ソースを修正しました。

CREATE DATABASE clbs character SET utf8;

/*--------------------------------------------------------
--SCHEDULE
--TABLE:イベントのスケジュール(カレンダー等に反映)
---------------------------------------------------------*/
DROP TABLE IF EXISTS clbs_schedules;

CREATE TABLE `clbs_schedules` (
    `id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
    `title` VARCHAR( 64 ) NOT NULL ,                    /* スケジュールのタイトル */
    `content` TEXT NOT NULL ,                           /* スケジュールの内容 */
    `start` DATETIME NOT NULL ,                         /* 日時(開始) */
    `end` DATETIME default NULL ,                       /* 日時(終了) */
    `place` VARCHAR( 64 ) NOT NULL ,                    /* 場所 */
    `user_id` INT(11) NOT NULL,                         /* 幹事/企画者 */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--USER
--TABLE:ユーザー(メンバー)情報
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_users;

CREATE TABLE `clbs_users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `password` VARCHAR(32) NOT NULL,                    /* パスワード */
    `username` VARCHAR(255) NOT NULL,                   /* ユーザー名 */
    `group_id` INT(11) NOT NULL,                        /* グループID(管理者・一般ユーザー等) */
    `pic` VARCHAR(255),                                 /* ユーザー画像(ファイル名) */
    `mail` VARCHAR(255),                                /* メールアドレス */
    `site` VARCHAR(255),                                /* サイトやブログのURL */
    `hobby` VARCHAR(255),                               /* 趣味 */
    `favarite` VARCHAR(255),                            /* 好き */
    `messanger` VARCHAR(255),                           /* メッセンジャー */
    `comment` VARCHAR(255),                             /* コメント */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--GROUP
--TABLE:ユーザーのグループ(管理者・一般ユーザー等)
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_groups;

CREATE TABLE `clbs_groups` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `groupname` VARCHAR(255) NOT NULL,                  /* グループ名 */
    `auth` TINYINT(4) NOT NULL,                         /* 権限値 */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--HOLIDAY
--TABLE:祝日を管理
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_holidays;

CREATE TABLE `clbs_holidays` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `holidaydate` DATETIME NOT NULL ,                   /* 祝日日時 */
    `holidayname` VARCHAR(255) NOT NULL,                /* 祝日名称 */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--ENTRY_USER
--TABLE:イベントの出欠情報
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_entry_users;

CREATE TABLE `clbs_entry_users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `schedule_id` INT(5) NOT NULL,                      /* イベントID */
    `user_id` INT(11) NOT NULL,                         /* ユーザーID */
    `status` TINYINT(4) NOT NULL,                       /* 出欠値 */
    `comment` VARCHAR(255) NOT NULL,                    /* イベントや出欠についてのコメント */
    `created` DATETIME NOT NULL,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--PICTURE
--TABLE:写真(イベントで撮影した写真を管理)
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_pictures;

CREATE TABLE `clbs_pictures` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `pic` VARCHAR(255),                                 /* 写真画像(ファイル名) */
    `comment` VARCHAR(255) NOT NULL,                    /* コメント */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

/*---------------------------------------------------------
--FREETALK
--フリートーク(トップページでダラダラ会話する用)
---------------------------------------------------------*/
DROP TABLE IF EXISTS  clbs_freetalks;

CREATE TABLE `clbs_freetalks` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `user_id` INT(11) NOT NULL,                         /* ユーザーID */
    `comment` VARCHAR(255) NOT NULL,                    /* コメント */
    `created` DATETIME NOT NULL ,
    `modified` DATETIME NOT NULL,
    PRIMARY KEY (`id`)
);

どんなCMSを作るのかを書き綴ってみる(CakePHP修行 #2)

アプリ名

何にも思いつかない。とりあえず、club + class で「clubss」としておきます。略名はclbsで。

概要

  • 飲み会や休日遊びに行く際に、幹事や企画者がそのイベントの日程や内容を登録して、そのイベントに対してメンバーが参加・不参加を設定できる。
  • SNSの簡易版のような感じにしたい。日記やコミュニティは無し。その代わりにTwitterみたいに一言コメントをダラダラ気軽に書き込めるようにしたい。

機能

  • トップページは、直近のイベントをいくつか表示。

    あと、フリートークな感じでコメントをダラダラ書き込める。

  • カレンダー(祝日入り)

  • メンバー一覧

  • 出来ることなら、携帯電話に対応。

ずらずらと思いつくままに書いてみました…。ソースやファイルを晒して誰かに見てもらえるように頑張ります。