今、住所録ソフトとして、筆まめを使っています。とても良くできたソフトだと思うのですが、どうしても足りない足りない機能や、かゆいところに手が届かず不便な思いをしている部分があり、リハビリもかねて、CakePHP に挑戦して見ようと思います。
早速、紀伊国屋の跡地にできた、ジュンク堂にはじめて足を運び、CakePHP 1.2 ガイドブックを買ってきました。他にもCakePHP 関連が何冊かあり、また、他のフレームワークの書籍もあったんですが、目移りしてキリがないので、一番無難そうな当該書籍にしました。
というわけで、当該書籍のPART 4 からスタート、その備忘録です。
その前に、PART 3 までの話ですが、まず、環境。Ubuntu にも環境を構築してあるんですが、MacBook Air 内部で完結させたかったので、MAMP を使いました。MAMP は万一おかしくなっても、MAMP フォルダを捨てれば復活できるし、Time Machine バックアップも有効になるので、テストには悪くないかなと思っています。cake は cake_1.2.5 を落とし、それを、MAMP 内部に移動、具体的には、/Applications/MAMP/htdocs/cake に配置しました。MySQL は phpMyAdmin から操作することにします。
まず始めにデータベースを作成しますが、とりあえず、cake_test という名前で、作成しました。
続いて、書籍の通り、顧客のテーブルを作成します。
CREATE TABLE `customers` (
`id` bigint(20) NOT NULL auto_increment,
`name` varchar(50) binary NOT NULL,
`tel` varchar(15) binary NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM
さて、ここで気になるのが、TYPE=MyISAM。
調べて見ると、MySQL、MyISAMとInnoDBを選ぶ方法 にまとめられており、更に咀嚼すると、MyISAM は速度重視、InnoDB は安全性(機能)重視、ということになる模様。
無論、自分の場合は、InnoDB を間違いなく選択するべきですが、今回は練習なので、ここは書籍のままにしておきます。
続いて、注文のテーブルを作成します。
CREATE TABLE `orders` (
`id` bigint(20) NOT NULL auto_increment,
`name` varchar(250) binary default NULL,
`customer_id` bigint(20) NOT NULL,
`order_date` datetime NOT NULL,
`status` enum('yet','done','canceled') NOT NULL default 'yet',
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
ここでは、テーブル名が order_records だったものを短く orders に変更。また、`flag_finished` tinyint(4) NOT NULL を、`status` 以下に変更して見ました。
order_records は、アンダースコアで単語を連結してテーブルの名前を付けるということを例示するためにあえてそういう名前にしたんだろうなと推測しています。
phpMyAdmin での作業は以上でした。
次に Cake での作業です。データベースの情報を設定する必要があります。app/config/database.php.default というファイルがあるので、これを編集して app/config/database.php を作成しました。
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'connect' => 'mysql_connet',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'encoding' => 'utf8',
'database' => 'cake_test',
'prefix' => '',
);
}
にほんブログ村 ライフスタイルブログ 薪ストーブ暮らしに参加しています。 励みになりますので、足あとがわりに、ランクアップにご協力下さい。 |