$row_obj->update() 後の値は突っ込んだ値に上書きかぁ
日付の値を、DB側に任せて(\'current_timestamp') update とかすると、更新後のupdate_dateとかの日付をとるのに、もう一回selectを明示的に投げる必要があるのかなぁ。なんかupdate後にselectを勝手にはしらせて、データとってきたりしてくれる、ナイスなオプションはないのかなぁ。
したのコードとログをみると何となく言いたいことがわかると思う。
$c->model('DB')->storage->debug(1); my $string = $c->model('DB::Strings')->single(11); use Data::Dumper; $c->log->debug( Dumper ( +{$string->get_columns} ) ); $string->update( { update_date => \'current_timestamp' } ); $c->log->debug( Dumper ( +{$string->get_columns} ) );
SELECT me.id, me.created_by, me.string, me.update_date, me.register_date FROM strings me WHERE ( 11 ): UPDATE strings SET update_date = current_timestamp WHERE ( id = ? ): '3'
[debug] $VAR1 = { 'register_date' => '2008-02-19 00:23:29', 'id' => '3', 'string' => 'foo', 'update_date' => '2008-02-24 22:49:20', 'created_by' => 'tomyhero-vaginarepos-org' }; [debug] $VAR1 = { 'register_date' => '2008-02-19 00:23:29', 'id' => '3', 'string' => 'foo', 'update_date' => \'current_timestamp', 'created_by' => 'tomyhero-vaginarespos-org' };
perl側で日付を入れればとりあえずこれに関してはうまくいくし、無駄なクエリーも走らないのはいいのはわかってんだけどね。何となくね。