CakePHPで高速Webアプリ開発
第5回 CakePHPで作るToDoアプリ(1)
第4回ではCakePHPでの開発環境を構築しました。今回からアプリケーション部分の開発にとりかかります。
開発するのはToDo管理アプリケーションです。今回は以下の作業を行います。
- DBの設計と作成
- コントローラの作成
- モデルの作成
- ビューの作成
この作業で実装される機能は以下になります。
- タスク一覧の表示
このアプリケーション開発の前提として,DocumentRootは/home/gihyo/public_htmlで,URLはhttp://example.com/~gihyo/,CakePHPをセットアップしたディレクトリは/home/gihyo/public_html/todo,URLはhttp://example.com/~gihyo/todo/とします。
DBの設計と作成
まずはCakePHPに慣れるためのサンプルアプリケーションですので,機能は最小限とします。アプリケーションを利用する想定ユーザは1人だけとして,複数ユーザでの利用はとりあえずは想定外とします。
データベース名はtodo,タスクを管理するテーブル名はtasksとしました。テストデータを含むMySQL用のdumpが以下になります。
CREATE DATABASE todo;
use todo;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE `tasks` (
`id` int(11) unsigned NOT NULL auto_increment,
`content` text NOT NULL,
`status` enum('yet','done') NOT NULL default 'yet',
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `status` (`status`),
KEY `created` (`created`),
KEY `modified` (`modified`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `tasks` (`id`, `content`, `status`, `created`, `modified`) VALUES
(1, 'プログラマーズリファレンスガイドを一通り読む', 'done', '2007-08-20 00:00:00', '2007-08-21 01:00:00'),
(2, 'ブログチュートリアルを行う', 'yet', '2007-08-21 02:00:00', '2007-08-21 02:00:00'),
(3, 'CakePHP情報サイトをRSSリーダーに登録する', 'yet', '2007-08-21 05:00:00', '2007-08-21 05:00:00');
データベース名に合わせてapp/config/database.phpも書き換えます(リスト1)。
リスト1 app/config/database.phpの書き換え
<?php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'ここにDBのユーザー名',
'password' => 'ここにDBのパスワード',
'database' => 'todo',
'prefix' => '',
);
}
レンタルサーバなどでdb名が固定の場合は,それにあわせて変更してください。
tasksテーブルの解説
テーブル名は複数形
CakePHPの規約ではテーブル名は複数形です。この規約は絶対ではありませんが,規約から外れた場合は規約外であることを明示するコードを書き足す必要があるため,特別な理由がない限りは規約に沿っておくべきです。
複数形は単純に「s」が足されるわけではなく,英語として正しい複数形である必要があります。たとえばdiaryはdiariesとなります。
複数形がない単語は例外的にそのままになります。たとえば「news」などはテーブル名も「news」です。
プライマリキーはid
プライマリキーはidです。CakePHPの規約ではプライマリキーのフィールド名はidなので,新規開発時にはプライマリキーは必ずidとしておいたほうが良いでしょう。テーブル名と同様に規約外でも可能ですが,コードを書き足す必要があります。
タスク内容とステータス
タスク内容はcontentフィールドに入ります。タスクの状態は「未完了」「完了」の2つとして,enum型のstatusフィールドで「yet(まだ)」「done(完了)」で表現します。
作成日はcreated,更新日はmodified
タスクを作成した日はcreatedフィールドにdatetime型で入ります。更新日はmodifiedフィールドで,同様にdatetime型です。この2つのフィールド名はCakePHPの規約に沿っており,新規にレコードを作成したときやレコード内容を更新したときに自動で更新されます。何かと便利なフィールドですので,特別な理由がない限りは作成しておくと良いでしょう。
CakePHPで高速Webアプリ開発
-
CakePHP/CakePHPで作るToDoアプリ
第5回 CakePHPで作るToDoアプリ(1) http://gihyo.jp/dev/serial/01/cakephp/0005
Tracked : #1 dev.phlox2.com (PukiWiki/TrackBack 0.4) (2008/03/11, 11:03)
-
なんというか・・・
cakePHPにあるサンプルを劣化させて持って来ただけのように感じるのは俺だけ??
Commented : #3 oioi (2009/11/01, 01:09)
-
asdf
うごきませんでした。
これだからWebの解説は嫌いなんだ。
時間ばかりとられてうまく動いた試しがない。Commented : #2 xxx (2009/06/30, 00:51)
-
さっぱり分からん
さっぱり分からん!
コントローラー作って、どっから、
/~gihyo/todo/tasks
が出てきたんだ?
やっぱ、技評は分からん!Commented : #1 tako (2009/03/17, 14:34)


