[PHP-users 23899] Re: DB_DataObjectのKEYを設定するには?

丸山 宏徳 kutsugi @ avis.ne.jp
2004年 12月 13日 (月) 12:17:28 JST


ushiroさん、お返事ありがとうございました。

> > 何とかできました。が、insert()やupdate()が動きません。
> > 調べてみると、DB_Object::keysの戻り値が空の配列になっています。
> 
> 以前、何かの処理でキー値が返ってこなかったことがありました。
> getLinksしてたとか、なんとか、、、あやふやな記憶の上今回のことと関係ない
> かもしれません。スミマセン。

んーと、今回はめちゃ単純なテーブル素読みのオブジェクトだったんですが(^^;
どうも追っかけてみると、スキーマ(テーブル名.ini)ファイルを読んでないよ
うな感じです。自動生成ソースの置き場所についてデフォルトで動かない部分が
ありましたから、また同じような原因で動いていないのかもしれませんね。

ということで、もともとPEARで提供されているソースコードをいぢるのもイヤで
したので、発想を変えて、表計算のワークシートでDB定義書を作って、create
table文と対応する(スキーマファイルを必要としない)DB_DataObjectの派生ク
ラスを生成するマクロを作ってしまいました(^^;
数時間ででっち上げた上にSQLiteでしか試していないようないい加減なマクロで
すが、誰かいる人、います?(笑)
とりあえずOpenOfficeで作ったので誰にはばかることなく配布出来ますが(^^;、
こんな代物でも欲しいという方がいらっしゃれば、どこかアップローダーを御紹
介ください。

つーか、早くSQLiteに正式対応して欲しいんですが(-_-;)>PEAR::DB
でも、中を見てるとなかなか難しそうな感じですね。いや、MySQLは便利ですわ
(苦笑)


> 要は DBオブジェクトを取得してしまい、後はqueryメソッドで制御するという方法です。
> 
> 複数のテーブルを同じトランザクションでも制御できるんですが、
> 最初のDataObjectのオブジェクトを作ってからでないとDBオブジェクトがとれな
> いのでスマートな作りとはいえません。。が、仕方なくやってます。

サンプルコード、ありがとうございました。
なるほど、こうすれば(DB_DataObjectのコネクションで)直接SQL文を投げるこ
とが出来るのですね。ありがとうございます。
作りに関しては……実は、こういう作りのほうがいいのかもしれませんね。ロッ
クしなきゃいけないようなSQLを投げるときはテーブル単位で投げるというコー
ディング規約にして、あとはアクセスの順番だけを決めておいてデッドロックを
防ぐ、というような感じで。



丸山 宏徳

E-Mail:kutsugi @ avis.ne.jp



PHP-users メーリングリストの案内