[cakePHP]インストールから初めてのプロジェクト作成まで |
02:02 |
|
|
評価:
安藤 祐介,岸田 健一郎,新原 雅司
毎日コミュニケーションズ
¥ 3,150
(2009-04-08)
|
cakePHPことはじめ。
cakePHPにちらっと触ったことはあるんですが、
ゼロから作り上げたことがなかったので、参考書を購入。
とりあえず、この中ではcakePHPを使って、グループウエアを作っていきます。
実際解説されているのは、スケジュール管理機能だけですが、
これができればあとは一人でできるでしょ、ということか。
さてさて、まずはインストール。といっても、
本家からcakePHPを
ダウンロードして、解凍するだけですが。
いつのまにか1.3.0がリリースされているので、それを落として、
/home/user/workspace/にコピー。
プロジェクト作成、テーブル作成などは、同梱のcakeツールを使えば、
自動的に作られるので、それを利用します。
[user@fedora ~]$ cd /home/user/workspace/cakephp/cake/console/コマンドの使い方はこんな感じ。
~$./cake bake project [プロジェクト作成ディレクトリ名]
[user@fedora console]$ ./cake bake project /home/user/workspace/calendarnoteWelcome to CakePHP v1.3.0 Console---------------------------------------------------------------App : calendarnotePath: /home/user/workspace/calendarnote/---------------------------------------------------------------Bake ProjectSkel Directory: /home/user/workspace/cakephp/cake/console/templates/skelWill be copied to: /home/user/workspace/calendarnote/---------------------------------------------------------------Look okay? (y/n/q) [y] > [enter]をおすDo you want verbose output? (y/n) [n] > [enter]をおす---------------------------------------------------------------Created: calendarnote in /home/user/workspace/calendarnote/---------------------------------------------------------------これで、プロジェクト作成。/home/user/workspace/calendarnote 配下に
諸々のファイルが作成される。
次は、データベースの設定。
~$./cake bake -app [プロジェクト作成ディレクトリ名]
[user@fedora console]$ ./cake bake -app /home/kenji/workspace/calendarnote/Your database configuration was not found. Take a moment to create one.---------------------------------------------------------------Database Configuration:---------------------------------------------------------------Name: [default] > [enter]をおすDriver: (db2/firebird/mssql/mysql/mysqli/odbc/oracle/postgres/sqlite/sybase) [mysql] > [enter]をおすPersistent Connection? (y/n) [n] > [enter]をおすDatabase Host: [localhost] > [enter]をおすPort? [n] > [enter]をおすUser: [root] > calendarnotePassword: > {password}Database Name: [cake] > calendarnoteTable Prefix? [n] > [enter]をおすTable encoding? [n] > utf8これで接続の設定完了。
次に、テーブル作成。
cakePHPのschemaを使って登録してみる。
~$./cake schema generate -app [プロジェクト作成ディレクトリ名]
[user@fedora console]$ ./cake schema generate -app /home/user/workspace/calendarnote/Welcome to CakePHP v1.3.0 Console---------------------------------------------------------------App : calendarnotePath: /home/user/workspace/calendarnote---------------------------------------------------------------Cake Schema Shell---------------------------------------------------------------Generating Schema...PHP Fatal error: Call to undefined function mysql_query() in /home/user/workspace/cakephp/cake/libs/model/datasources/dbo/dbo_mysql.php on line 588。。できない。よくみると、fatal errorが発生している。
mysql_query()関数がない?もしや、、とphp関連のrpmファイルを確認。
[root@fedora httpd]# rpm -qa | grep phpphp-common-5.2.13-1.fc11.i586php-pear-1.7.2-3.fc11.noarchphp-5.2.13-1.fc11.i586php-cli-5.2.13-1.fc11.i586php-mbstring-5.2.13-1.fc11.i586php-mysqlをインストールしていなかった。(汗
そりゃ、関数ないよね。。
ということで、まずはphp-mysqlのインストール。
[root@fedora httpd]# yum install php-mysql改めて、実行。
[user@fedora console]$ ./cake schema generate -app /home/user/workspace/calendarnote/Welcome to CakePHP v1.3.0 Console---------------------------------------------------------------App : calendarnotePath: /home/user/workspace/calendarnote---------------------------------------------------------------Cake Schema Shell---------------------------------------------------------------Generating Schema...Schema file: schema.php generatedこれで、schemaクラスが作られます。作成されるファイルはconfig/schema/schema.php
これが雛形クラスなので、各カラムを配列形式で記述。
こんな感じ。
<?php /* SVN FILE: $Id$ *//* Calendarnote schema generated on: 2010-05-04 01:05:25 : 1272904465*/class CalendarnoteSchema extends CakeSchema { var $name = 'Calendarnote'; function before($event = array()) { return true; } function after($event = array()) { } var $schedules = array( 'id' => array( 'type' => 'integer', null => false, 'default' => NULL, 'length' => 20, 'key' => 'primary' ), 'from' => array( 'type' => 'datetime', null => false, 'default' => NULL, ), 'to' => array( 'type' => 'datetime', null => false, 'default' => NULL, ), 'titile' => array( 'type' => 'string', null => false, 'length' => 100, ), 'contents' => array( 'type' => 'text', null => false, 'default' => NULL, ), 'created' => array( 'type' => 'datetime', null => true, 'default' => NULL, ), 'updated' => array( 'type' => 'datetime', null => true, 'default' => NULL, ), 'indexes' => array( 'PRIMARY' => array( 'column' => 'id', 'unique' => 1, ), ), );}?>で、テーブル作成のコマンドを実行すると、DBにテーブルが作成されます。
~$./cake schema create -app [プロジェクト作成ディレクトリ名]
[user@fedora console]$ ./cake schema create -app /home/user/workspace/calendarnotemysqlにログインして確認してみる。
mysql> show tables;Empty set (0.01 sec)mysql> show tables;+------------------------+| Tables_in_calendarnote |+------------------------+| schedules |+------------------------+1 row in set (0.00 sec)はい。お疲れ様でした。ここまで。
ちなみに本では、./cake schema
run create 〜 とあるがrunは不要。
v1.3で変わったのかな。