symfonyチュートリアル実践【第4日目続き】

Nov 03 2006

4日目

4日目の続き
フォーラムで検索すると同じエラーを出している人がいました。
Day 4 – PHP Fatal error

チュートリアルのソースがあるレポジトリを見よ、と回答にあったので見てみた。
http://svn.askeet.com/tags/release_day_4/

自動生成されるBaseQuestion.phpが違っていることが判明。となると自動生成の元になったconfig/schema.xmlが怪しい、と見比べてみると自分のと全然違う。symfonyのバージョンの違いのせいでしょうか。betaにした方が良かったかも、、と後悔しつつwgetでschema.xmlをダウンロードして自分のと置き換え。

$ symfony propel-build-model

すると今度はちゃんとBaseQuestion.phpにgetInterestedUsersが定義されていました。

ただ今度は

$ php batch/load_data.php

こちらでエラー。

PHP Fatal error:  Uncaught exception 'PropelException' with message 'No connection params set for symfony'

データベースの名前が違うらしい。
前のschema.xmlを見ると以下のようになっていたので修正。

<database name="propel" defaultIdMethod="native">
$ symfony propel-build-sql
$ mysql -u youruser -p askeet < data/sql/schema.sql
$ php batch/load_data.php

SQLを実行するときにdefault句が変でつまずいていたのがなくなった。schema.xmlは2日目のコピペなのだがバージョンによって動かないのかもしれない。

http://askeet/frontend_dev.php/question/show/id/1

にアクセスして上部のツールバーからデータベースのアイコンをクリックすると、以前より実行されるSQL文の数が1つ減ったことがわかる。

wgetでschema.xmlを取得したため、チュートリアルのSame for the answersの部分をちょっとやってしまったことになる。
コードを修正する部分は修正して、”Add some test data in the fixtures”はdata/fixtures/test_data.ymlに書き加え、”Launch the population batch”で

php batch/load_data.php

を実行。ブラウザでチェックするとまたidが変わっていた点以外は問題なし。

“Create an alternate version of the title”の部分はすでに終わっている。

“Custom class”でlib/myTools.class.phpを作成。このディレクトリ下にあるファイルは自動的にロードされるらしい。
“Routing”で説明されているように英語圏のブログの多くはこんな感じのPermaLinkになっているが、日本語だと無理である。

http://askeet/frontend_dev.php/question/what-shall-i-do-tonight-with-my-girlfriend

そんなわけでこの部分は適当にやっておしまい。しかしこの調子だと本当に24日以上かかりそうです。。

No responses yet

Leave a Reply