Doctrineのupdateの仕方が美しくない
Timestamp/Date/DateTime型だとエラーになる
普通に書くとこんな感じになるけど、エラーになる
<?php Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', date('Y-m-d H:i:s')) ->execute(); #=> syntax error Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', "'".date('Y-m-d H:i:s')."'") ->execute(); #=> ok
どうせだったら、日付書式か、DateTimeクラスを認識するようにすればよかったのに
<?php Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', new DateTime()) ->execute(); Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', date('Y-m-d H:i:s')) ->execute();
NULLが認識されない
<?php Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', null) ->execute(); #=> syntax error Doctrine::getTable('Foo')->createQuery('f') ->update() ->set('f.bar', 'NULL') ->execute(); #=> ok
これも内部で===を利用してnull判定をして、自動でnullを挿入すべきだと思う
Doctrine_Record#set()との挙動に違いがあるので、初めてupdate()を使うときは必ずエラーになるかも
次のバージョンでは対応されそうだけど、symfonyに取り込まれないと使えないしなぁ