Doctrine 2 でのエンティティの変更の追跡
Doctrine 2 は、EntityManager と UnitOfWork を使用してエンティティの変更されたフィールドを追跡する方法を提供します。
エンティティ $e があり、そのフィールドを変更するとします。
$e->setFoo('a'); $e->setBar('b');
変更されたフィールドの配列を取得するには:
取得UnitOfWork:
$uow = $em->getUnitOfWork();
変更の計算:
$uow->computeChangeSets();
エンティティの取得変更点:
$changeset = $uow->getEntityChangeSet($e);
$changeset には、変更されたすべての属性と値のペアが含まれます:
[ 'foo' => ['old' => 'oldFoo', 'new' => 'a'], 'bar' => ['old' => 'oldBar', 'new' => 'b'], ]
PreUpdate リスナー向けのメモ:
preUpdate リスナー内で更新されたフィールドを取得しようとしている場合は、変更セットの計算がすでに行われているため、それをスキップします。 getEntityChangeSet を呼び出して変更を取得するだけです。
警告:
Doctrine イベント リスナーの外部でこのメソッドを使用すると、その操作が中断される可能性があります。
以上がDoctrine 2 でエンティティの変更を追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。