普通に値にNullを設定してもNullではなくて''(空文字)となってしまうとこがポイント。登録先のカラムが数値などの場合に''ではエラーが起きてしまう。なので、長いこと悩んでましたが、ふと思いついてDb周りのソースを覗いてみたらうまい方法を見つけました。
Zend_Frameworkの例にして、どうするかと言うと
$table = new Bugs(); $data = array( 'created_on' => '2007-03-22', 'bug_description' => 'Something wrong', 'bug_status' => 'NEW', 'bug_null' => new Zend_Db_Expr('null') $table->insert($data);
まー大した事じゃないんだけどさ。
Zend_Db_Exprのインスタンスを作って設定。insertやupdateの関数を経由する時には自動でデータを展開してくれるんですが、普通のデータは多少加工が入りますが、Zend_Db_Exprが設定されていた場合にはコンストラクタに設定した文字列をそのまま出力してくれるようです。
他にもこいつを使う事によってDBの関数を使う事も可能になります。
今までどうすんだろうと無視してましたが、やっと解決。
0 件のコメント :
コメントを投稿