symfonyにデータベースの設定をしてみる。
基本的には、教えていただいたサイトの
http://www.symfony.gr.jp/docs/symfony1-docs/jobeet/ja/
を参考に実施。ORMはDoctrineを使用。
手順はバラバラにやってます。
Configを設定
symfony configure:database "mysql:host=[サーバーアドレス];dbname=[DB名]" [ユーザー名] [DBのパスワード]
DBを作成
symfony doctrine:build-db
おお!DBが出来てる!すごいすごい!
テーブルスキーマの作成をする。
config/doctrine/schema.ymlを手動で編集する。
今回は簡単なユーザーマスタを作成。
テーブルは下記のような感じ
・ユーザーID
・パスワード
・ユーザー名
・削除フラグ
・登録日時
・更新日時
config/doctrine/schema.ymlの中身
MstUser:
tableName: MstUser
options:
charset: utf8
columns:
user_id:
type: string(255)
primary: true
password:
type: string(255)
notnull: true
user_name:
type: string(255)
notnull: true
delete_flg:
type: char(1)
default: 0
notnull: true
actAs:
Timestampable: { }
下記部分が、登録日と更新日をsymfonyが管理してくれるらしい。
(自動でカラムが追加される。)
---------------------------------
actAs:
Timestampable: { }
---------------------------------
下記を入れないと、UTF8にならなかった。
(他に方法がありそうな感じ)
---------------------------------
options:
charset: utf8
---------------------------------
モデルを作成
symfony doctrine:build --model
下記、ファイルが作成される。
lib/model/doctrine/MstUser.class.php
lib/model/doctrine/MstUserTable.class.php
lib/model/doctrine/base/BaseMstUser.class.php
SQLを作成
symfony doctrine:build --sql
下記、ファイルが作成される。
data/sql/schema.sql
中身を見てみると
CREATE TABLE MstUser (user_id VARCHAR(255), password VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, delete_flg CHAR(1) DEFAULT '0' NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY(user_id)) DEFAULT CHARACTER SET utf8 ENGINE = INNODB;
CREATE文が作成されている。
また、created_at/updated_atも定義されている。
SQLを実行してテーブルを作成
symfony doctrine:insert-sql
なんだか便利だけど、なれるまでかかりそう。