symfony askeet Day 2

  • Propelの設定
  • MySQLの設定
  • Questionという機能を作る

Propelの設定

Day 2が終わるとこんなテーブルができあがるようです。

mysql> show tables;
+------------------+
| Tables_in_askeet |
+------------------+
| ask_answer       | 
| ask_interest     | 
| ask_question     | 
| ask_relevancy    | 
| ask_user         | 
+------------------+
5 rows in set (0.00 sec)

ここで気になったのがschema.xmlって存在。
何者?と思ったので検索することに。
http://wiki.symfony.jp/index.php?propel
案外近場に説明があったので読むとPropelってモノの設定ということらしい。
XMLで書かれているとのこと。
ということでschema.ymlを指示通りさくっと削除。

svn delete config/schema.yml

とりあえず、schema.xmlの内容がaskeet上に書かれているのでさくっとコピペ。
今、まとめを書いてて思いましたがテーブルの設定を書いていたのですね。
コピペして保存したら今度はpropel.iniの設定。
config内にあるみたいなのでこれもさくっと開く。
propel.database.urlを自分の環境に合わせろよとあるので設定。
当環境では以下の通り (IDはroot、DB名はaskeetということにしてます。)

propel.database.url        = mysql://root@localhost/askeet

さっき消したschema.ymlを作るために以下を実行。

symfony propel-build-schema

これでconfig/schema.ymlができた。
よし、ということで次はPropelの設定。
今回はMySQLInnoDBを使用するということで
propel.iniのどっかに

propel.mysql.tableType = InnoDB

を追加する。
追加したら

symfony propel-build-model

を実行。オブジェクトモデルを作成する。

MySQLの設定

そういえば、MySQLにDBを作り忘れたのでさくっと作ります。

$ mysql5 -uroot
mysql > create database askeet;

ここらへんは、環境によって大きく違いそうなので
askeetというDBを作ればいいということですね。

DBができたら次やることは重要。
config/databases.ymlを開いて確認する。
なぜか、コメントアウトされている><
コメントアウトを消して保存。
できたらSQL文を作ろう。

symfony propel-build-sql

data/sql/lib.model.schema.sqlというファイルが作られました。
これをMySQLに流しましょう。

mysql5 -uroot askeet < data/sql/lib.model.schema.sql

Questionという機能を作る

設定も終わったのであとは早速アプリを作っていきましょう。

symfony propel-generate-crud frontend question Question

これはどういうことかと調べたら
参考:[ThinkIT] 第2回:Symfonyを例にしたフレームワークを使ったPHP開発 (2/3)
データベースのスキーマをベースに自動生成してくれるらしい。便利><
で、キャッシュを削除してブラウザで見てみる。

symfony cc frontend config

http://askeet.localhost/question
うぉーできてる><