私は既存のId
で新しいエンティティを作成し、関連するデータベースレコードを更新します。Doctrine merge:DateTimeフィールドは常に更新されます
Doctrine merge は私の親友です:変更があるかどうかを確認し、正しい更新クエリを生成します。
$entity = new Entity();
$entity->setId(1);
$entity->setName('test');
$EntityManager->merge($entity);
$EntityManager->flush();
仮定そのIDを持つ要素= 1既にDBに存在する:私は、コードを再度実行する場合
UPDATE table SET name = ? WHERE id = ? ["test","1"]
:名前が「テスト」と異なる場合、教義は、このクエリを生成しますDoctrineは何も変更されていないことを認識し、クエリはコミットされません。
私はDateTimeフィールドを設定したときに変更し、常に更新クエリを実行するようは、教義はそれを考慮しかし...:
$entity = new Entity();
$entity->setId(1);
$entity->setDate(new \DateTime(2000-01-01));
$EntityManager->merge($entity);
$EntityManager->flush();
//* ALWAYS commits this query:
>> UPDATE table SET date = ? WHERE id = ? ["2000-01-01 00:00:00","1"]
あなたはこの無用の更新を回避する方法を知っていますか?ありがとう!
典型的なプログラマーのアプローチ:もしあなたがそのバグを解決できないなら、それをFeature!_;)としてマークしてください – T30
私は彼らの理由に同意しなかったので、ほとんど落胆しましたXD – andho
Javaのequalsとhashメソッドは、 。 – andho