ホームページ >バックエンド開発 >PHPチュートリアル >Doctrine 2 でエンティティの変更を追跡するにはどうすればよいですか?

Doctrine 2 でエンティティの変更を追跡するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-10 09:19:02369ブラウズ

How to Track Entity Changes in Doctrine 2?

Doctrine 2 でのエンティティの変更の追跡

Doctrine 2 は、EntityManager と UnitOfWork を使用してエンティティの変更されたフィールドを追跡する方法を提供します。

エンティティ $e があり、そのフィールドを変更するとします。

$e->setFoo('a');
$e->setBar('b');

変更されたフィールドの配列を取得するには:

  1. 取得UnitOfWork:

    $uow = $em->getUnitOfWork();
  2. 変更の計算:

    $uow->computeChangeSets();
  3. エンティティの取得変更点:

    $changeset = $uow->getEntityChangeSet($e);

$changeset には、変更されたすべての属性と値のペアが含まれます:

[
    'foo' => ['old' => 'oldFoo', 'new' => 'a'],
    'bar' => ['old' => 'oldBar', 'new' => 'b'],
]

PreUpdate リスナー向けのメモ:

preUpdate リスナー内で更新されたフィールドを取得しようとしている場合は、変更セットの計算がすでに行われているため、それをスキップします。 getEntityChangeSet を呼び出して変更を取得するだけです。

警告:

Doctrine イベント リスナーの外部でこのメソッドを使用すると、その操作が中断される可能性があります。

以上がDoctrine 2 でエンティティの変更を追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。