DB_DataObjectをとりあえず克服
昨日、いやおとといから格闘し続けていたDB_DataObjectを使ってとりあえずアンケートページが作成できました。
長かった…
何回か無駄につまづいてしまいました。マニュアルの記述がもう少し充実していたら多くの人が助かっているに違いない。特にレコードを更新する update() の使い方はマニュアル上の記述がほぼ皆無で、行間を読むことを強いられてしまいました。
DB_DataObjectは、PostgreSQLで Sequence (Auto Increment)を利用する際、最後に挿入した行のIDをうまく取得できません。PostgreSQLの仕様では SELECT last_value() という関数がしっかり用意されているのですが、DB_DataObjectはそれを取得せずにTrueを毎回返してきます。そのため、これを最後のIDだと思って扱うと「1」とみなされ、意図した操作と食い違った結果になってしまいます。なので、ここでは DataObject の query() 関数を使って生のクエリを実行するしかありません。
もしくは、バックエンドが pgsql の場合にも正当な処理をするよう insert() をオーバーライドしてもいいかもしれません。 insert() の中身を見ていないので具体的な方法はわかりませんが。
ちなみに query() 関数もドキュメンテーションが不充分だったため、自分で var_dump しながらの試行錯誤でした。
今のところ、学び始めとはいえ単純なデータベース操作でこれまでと比べ物にならない程手間取っています。これははたして本チャンアプリでうまくいくんだろうか。