Bloggerへの移行前のWordpressにて2013-01-12に投稿した記事です。
前回のエントリではMac環境でFuelPHPでWelocme画面を表示するまでの説明を記載しました。
今回は前回の続きでScaffoldを利用して自動で画面を作成します。
目標
Scaffoldを利用して画面が作成出来る事。
Scaffoldにより、DBのテーブルに対応した一覧表示、新規登録、編集、詳細情報表示、削除に対応した画面及び機能を自動で作成します。
ソフトウェア構成
- Mac OSX 10.8.2
- [前回のエントリでインストール済み]FuelPHP 1.4
- [前回のエントリで設定済み]Apache
- [前回のエントリで設定済み]PHP 5.3.15
- Pear(インストーラーを利用)
- MySQL(homebrewによるインストール)
目次
- MySQLのインスール、DB作成、ユーザー作成、テーブル作成
- Pearのインストール
- pdo_mysqlの設定変更
- FuelPHPのDB接続設定
- Scaffoldの実施と設定変更
1.MySQLのインスール、DB作成、ユーザー作成、テーブル作成
FuelPHPに接続するDBにはMySQLを利用します。PostgreSQLでの接続も可能ですが、Scaffoldをやってみると削除処理が失敗するなどの事象が発生したので、基本はMySQLで利用するのが良いと思われます。
1-1.MySQLのインストール
MySQLはhomebrewを利用してインストールします。
$brew install mysql
基本的にはこちらのサイト(HomebrewでMySQLをインストールする時に知っておきたいこと)を参考に実施しました。
また、上記のサイトにある以下を実施しました。
- データベースとユーザーの設定
- 起動スクリプトの設定
上記実施により、MySQLのrootユーザーが出来たと思うので、そのユーザーを利用して以下を実施します。
- DBの作成
- DB操作のユーザー作成
- 試験用のテーブル作成
1-2.DBの作成
MySQLへのログインし、DBの作成を行います。
下記例ではDB名をtest_dbとしていますが、適宜必要に応じて変更して下さい。
$mysql -u root -p
Enter password:(設定したrootのパスワードを入力)
mysql>CREATE DATABASE test_db DEFAULT CHARACTER SET utf8;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| test_db |
+--------------------+
5 rows in set (0.01 sec)
1行目ではrootユーザーでパスワード認証を利用し、MySQLにログインします。
2行目でtest_dbというDB名を文字コードをUTF-8として作成します。
3行目で先ほど作成したDBが登録されているかをshow databasesコマンドを利用して確認します。正常に登録が出来た場合、test_dbが存在する事が確認出来ます。
1-3.DB操作のユーザー作成
次にFuelPHPからMySQLへ接続する際のユーザーを個別に作成します。
以降のコマンドは既にrootユーザーでMySQLへ接続した状態とします。
なお、下記例ではユーザー名「dbuser」、パスワードを「dbpass」として作成しますので、必要に応じて適宜変更下さい。
mysql>grant ALL PRIVILEGES on test_db.* to dbuser@'localhost' IDENTIFIED BY 'dbpass' with grant option;
mysql> SELECT host,user FROM mysql.user where user='dbuser';
+-----------+--------+
| host | user |
+-----------+--------+
| localhost | dbuser |
+-----------+--------+
1 row in set (0.00 sec)
mysql>exit
$mysql -u dbuser -p
Enter password:(設定したdbuserのパスワードを入力)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| test_db |
+--------------------+
3 rows in set (0.01 sec)
1行目ではtest_dbに対して全ての権限(select、insert,deleteなど)を付与したユーザーを作成します。
なお、上記ユーザーはlocalhostからの接続のみ可能となっているため、FuelPHPが動作するWebサーバーとMySQLのサーバーが別となる場合には別途設定が必要です。
2行目ではSQLを発行し、ユーザーが登録されたか確認します。where user='dbuser'を削除すると全てのユーザーが表示されます。
3行目以降では一度rootユーザーでログアウトを行い、作成したユーザーでMySQLでのログインを実施します。最後にshow databasesコマンドでtest_dbが表示される事を確認します。
1-4.試験用のテーブル作成
最後に試験用のテーブルを作成します。
mysql -u dbuser -p test_db
Enter password:(設定したdbuserのパスワードを入力)
mysql>
CREATE TABLE POSTS
(
ID INT(11) NOT NULL AUTO_INCREMENT,
TITLE VARCHAR(255) NOT NULL,
SUMMARY VARCHAR(255) NOT NULL,
BODY TEXT NOT NULL,
CREATED_AT INT(11) NOT NULL,
UPDATED_AT INT(11) NOT NULL,
PRIMARY KEY (ID)
);
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| posts |
+-------------------+
1 row in set (0.00 sec)
1行目ではDB名test_dbを利用することとして、ログインします。ログイン時にDBを指定しなかった場合、use (DB名)と入力する事でDBの切り替えが可能です。
2行目では試験用のテーブルを作成します。なお、Scaffoldを利用する場合id,created_at,updated_atカラムは必須となります。
3行目ではshow tablesコマンドでテーブルの作成を確認します。
2.Pearのインストール
oilコマンドを利用してScaffoldを利用する際にPearを利用したため、インストールを行います。(Macでも必要かの確認は行っていませんが、winでは必要だった為、インストールしています。)
こちらのサイト(Mac OS X LionでPEARをインストールする方法)を参考にインストールさせて頂きました。
詳細については割愛しますが、特にはまることはないかと思います。
3.pdo_mysqlの設定変更
php.iniでMySQLへの接続時に利用するsocketファイルの記述がありますが、デフォルトの設定とhomebrewでインストールした時に配置されるファイルの位置が違うため、変更します。
私の場合、private/tmp/mysql.sockに存在しましたが、以下のようなコマンドでどこに存在するか確認出来るかと思います。
$sudo find / -name mysql.sock
上記で確認後、php.iniを変更。
$sudo vi /etc/php.ini
;pdo_mysql.default_socket=/var/mysql/mysql.sock
→pdo_mysql.default_socket=/private/tmp/mysql.sock
4.FuelPHPのDB接続設定
FuelPHPからMySQLへ接続する為の設定を行います。
(以前のエントリ通り、~/Site/配下にblogというプロジェクトを作成した想定。)
$vi ~/Sites/blog/fuel/app/config/development/db.php
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=test_db',
'username' => 'dbuser',
'password' => 'dbpass',
),
),
);
5.Scaffoldの実施と設定変更
ScaffoldではORMを利用する為、config.phpを変更してORMを有効化します。
$vi ~/Sites/blog/fuel/app/config/config.php
return array(
'always_load' => array(
'packages' => array(
'orm',
),
),
);
準備が整ったので、いよいよScaffoldを利用します。
以下のようにテーブルのカラム名、型を記載する事で自動でModel,View,Controllerを生成します。
$cd ~/Sites/blog/
$php oil g scaffold post title:varchar[255] summary:varchar[255] body:text
上記を実施後、以下のURLでブラウザにアクセスします。
http://localhost/blog/public/post/
上記により、一覧画面が表示されます。
一覧画面
追加画面
詳細表示画面
編集画面
ページング機能などは無いため、必要な場合には別途Paginationクラスを利用して作成します。
とりあえず以上になります。
お疲れ様でした!
0 件のコメント:
コメントを投稿