[s2container-php5:80] Re: timestampによる排他制御とinsert文の自動生成について

Yusuke Hata nowel @ xole.net
2007年 2月 26日 (月) 02:58:15 JST


ハタです。

下記、確認しました。
以前、一部のDBMSでtimestampカラムに対してタイムスタンプ(integer/long)を入れなければ
エラーが発生したかと思いましたが
指摘された内容でテストケースが通った(Oracle/MySQL/PostgreSQL/SQLite)ので、
指摘内容のまま次のバージョンに適用したいと思います。
# Firebirdではテスト機がなかったので、試せなかったですが、問題ないでしょう

次のバージョン(1.1.1の後)となるS2Dao.PHP5-1.1.2には以前のもの[DAOPHP-8]を含め
3月上旬のリリースに向けて作業をしています。

以上です、よろしくお願いします。

Eishi Kuroda <kuroda @ jetsetrecords.net> wrote:

> こんにちは、黒田です。
> 
> 自動生成insert文でのtimestampフィールドの設定に不具合と思われる点を発
> 見しましたので報告させて頂きます。
> 
> S2Dao.PHP5 1.1.1にて、
> daoクラスに、下記の様なentityを引数としたinsert文の自動生成用メソッド
> を作ります。
> 
> public function insert(Department $department);
> 
> entityにはtimestampプロパティを定義しておきます。
> このinsertを呼び出すと、
> 自動生成されるSQL内にてtimestampフィールドに対しunixtimeが設定されるよ
> うになっており、この為、挿入後の該当列のtimestampフィールドが
> 0000-00-00 00:00:00となります。
> 
> s2dao.core.classes.phpの、
> setupInsertBindVariablesメソッドにて、
> 
>   if (strcasecmp($propName, $timestampPropertyName) == 0) {
>     $this->setTimestamp(time());
> 
> となっているのが問題では無いかと思われましたので、
> 下記の様に修正してみたところ、
> 自動生成insert文で正しくtimestampが設定されるようになりました。
> 
>  $this->setTimestamp(date('Y-m-d H:i:s', time()));
> 
> これで問題なければ、修正をお願いしたいと思います。
> では、よろしくお願いいたします。
> 
> 黒田映史
> 

-- 
Yusuke Hata <nowel @ xole.net>
blog: http://blog.xole.net/


S2Container-PHP5 メーリングリストの案内