index

2003年 6月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
2003年 7月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
2003年 8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
  18 19 20 21 22 23 24
  25 26 27 28 29 30 31

アレ

  ▽20030711a #日記

DB_DataObject をいろいろと使ってみる.

oci8 では,options[ optimize ] == portability でないと動かないモヨウ. 変え方は,$db =& $dataobject->getDatabaseConnection() してから $db->setOptions( 'optimize', 'portability' );. なぜ動かないかというと,portability モードでないと, Oracle は何でもかんでも大文字で返すから.

DSN は oci8://hoge:fuga@moge だけだと DB_DataObject_Generator が DB 名を拾えないので, ダミーでいいから oci8://hoge:fuga@moge/dbname の形式にしておく.

ってゆーか DB_oci8 の「互換モード」(勝手に命名)も,けっこうアレだなぁ. テーブルリストとかは大文字のままだし, っていうかこれが小文字じゃなきゃいかんなんてルールはないのだろうけど, DB_DataObject はそれに依存してるしなぁ. っていうかこれバグだろう.Bugs に登録しちゃえ(笑)

クラス作成段階ではテーブル定義を大文字で持ってくるから, クラス変数は $_USER_ID みたく大文字になるが, 動かすのは互換モードで動かすので $_user_id とかが実行時に作られてこっちに値が代入される罠.

ってことで,_createTableList() をオーバライドしたクラスを作って,そっち使って作成.

あと,_generateDefinitionsTable() に case "NUMBER": // oracle を追加.

primary key を探して勝手にキー項目を設定する機能は,oci8 では動かないようだ. ってーか作者もこれを PEAR DB 一般で行なう方法を思いつかないらしい. ソースに I have no idea なんて書いてある(笑)

index