久しぶりにSymfonyをやってみました。今回はかなり重要なデータベースの操作についてです。
まずスキーマを作成します。これはデータベースを操作するためのクラスを生成するために必要です。手動で作成するか、既存のデータベースから作成することも出来ます。今回は既存のデータベースから生成する方法を選択します。この場合には、config/propel.iniに接続情報を登録しておく必要があります。
symfony propel-build-schema
を実行すると以下のようなエラーがでました。
PHP Warning: include_once(phing/Phing.php): failed to open stream: No such file or directory in /usr/share/pear/pake/tasks/pakePhingTask.class.php on line 11
PHP Warning: include_once(): Failed opening ‘phing/Phing.php’ for inclusion (include_path=’/var/www/zaiteku.jp/lib:/var/www/zaiteku.jp/apps//lib::/usr/share/pear/symfony/vendor:/usr/share/pear/../lib:/usr/share/pear/lib:.:/usr/share/pear’) in /usr/share/pear/pake/tasks/pakePhingTask.class.php on line 11
ERROR: symfony – You must install Phing to use this task. (pear install http://phing.info/pear/phing-current.tgz)
どうやらphingというのが入っていないためのようでしたので、以下を実行してインストールします。
pear channel-discover pear.phing.info
pear install phing/phing
そうした上で、再度
symfony propel-build-schema
を実行したところ、またエラーが出ました。どうやらXMLを生成する際にDOMを利用しているらしく、php-domというパッケージをインストールする必要があります。
PHP Fatal error: Class ‘DOMDocument’ not found in /usr/share/pear/symfony/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php on line 273
yum php-dom
今度は、依存性のエラーに悩まされました。どうやらphp-domは5.1.6-3.3.fc6を要求しているけれども、アップグレードすると既存のパッケージphp-gdなどが5.1.6-3.1.fc6が必要でインストールできないとわがままを言っている。
Error: Missing Dependency: php = 5.1.6-3.1.fc6 is needed by package php-gd
Error: Missing Dependency: php = 5.1.6-3.1.fc6 is needed by package php-pdo
そこで、同時にアップグレードしてあげた上で、
yum update php php-gd php-pgsql php-pdo
再度yum install php-domを実行するとうまくいった。
次に
symfony propel-build-model
でモデルを生成し、
symfony propel-generate-crud (appname) (modulename) (databasename)
で簡易アクセスツールを生成しました。
そうすると
index.php/modulename
でアクセスできるはずが500エラー。
デバッグモードで起動すると
[PropelException]
No connection params set for propel
というエラーが発生していて表示できないらしい。
ここでどうやって良いのかかなり悩んだが、http://www.symfony-project.com/askeet/2 のドキュメントを見つけることが出来、config/databases.ymlを編集すればよいことがわかった。
実際に起動できるようになると、かなり簡単に操作できることがわかって悩んだ甲斐がありました。
あまりのドキュメントの少なさに途方にくれ、もうすこしでphp-cakeに浮気しそうになりました。もう少し頑張ってみようと思います。
cakeのが人気あるみたいですね。
そうなんですねー。PHPのフレームワークごとに特徴(メリット・デメリット)をまとめてある文献があればいいんですけどねぇ。。。