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に取り込まれないと使えないしなぁ