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

Patricia Arquette
リリース: 2024-11-10 09:19:02
オリジナル
271 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート