symfonyの威力を断片的に紹介。ご意見ご感想はこちらから。
実際にシステムを組むとなるとデータベースとの連携は欠かせません。
symfonyではシステムとデータベースとの連携にPropelと言うO/Rマッパーを採用しています。
O/RマッパーとはObject/Relational Mapperの略でシステム側で
データベースのテーブル構造をオブジェクトとして持ち(マッピングさせ)、
システムとデータベースとの連携をスムーズに行うことを可能としたツールです。
とりあえず、データベース接続の設定しましょう。
データベース接続の設定は
/symfuldaze/config/databases.yml
と
/symfuldaze/config/propel.ini
で行います。
基本的にはdatabases.ymlがシステムとデータベースとの連携で呼び出されます。
propel.iniはデータベースからスキーマファイルを生成する時のみに呼び出されているようです。
/symfuldaze/config/databases.ymlを編集します。
コメントアウトを全部解除し、データベースへの接続情報を書き込みます。
私はMySQLなのでそのままですが、PostgreSQL等、その他データベースをご利用の方は各自お調べください。
プロジェクト名のところは私の場合だとsymfuldazeになります。
ユーザー名とパスワードは各自のデータベース環境に合わせてください。
新しく追加した最後の行に注目してください。
symfonyの文字コードはUTF-8が推奨されているので、ここからは文字コードがUTF-8を前提に進めていきます。
最後の行を加えることによってシステムがDB接続をする際の文字コードをUTF-8として定義します。
/symfuldaze/config/propel.iniを編集します。最初の
の部分を修正します。
最後の行は新たに追加されたモノです。
InnoDBを使用することによってトランザクションを使えるようになります。
トランザクションとはデータ処理の途中でエラーが起きた時、
最初からそこまでの処理を辿って取り消せる、と言うデータベースの機能です。
あまりにも有名なATMの例をグーグル先生で調べてみてください。
ではデータベースを用意しましょう。
ちなみに私はPropelの symfony propel-build-db コマンドでデータベースを作ろうと
どう頑張っても上手くいきませんでした。上手くいった方おられたらコメントください。
ここでは symfony propel-build-db コマンドを使わない方法、非symfonyですが、を紹介します。
/symfuldaze/data/sql
に、create-db.sqlと言うファイルを作り
と記述します。
続いてコンソール画面にて
¥ mysql -u ユーザー名 -p < data/sql/create-db.sql
Enter password: パスワード
と実行します。上手くいったか、MySQLサーバーにログインして調べてみましょう。
¥ mysql -u ユーザー名 -p
Enter password: パスワード
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is ** to server version: 4.1.9-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| symfuldaze |
+----------------------+
** rows in set (*.** sec)
mysql>quit;
データベースの作成が成功したら次はシステムとデータベースとの連携を試みてみましょう。
まずはパワフルなpropel-generate-crudコマンドの紹介です。
<<<3. モジュールの作成 5. 商品モデルでpropel-generate-crud>>>