Doctrine 2 を使用した変更されたエンティティ フィールドの取得
セッターを使用してエンティティの状態を変更する場合、どのフィールドが変更されたかを知ると役立つことがよくあります。 Doctrine 2 は、この情報を取得するメカニズムを提供します。
変更されたフィールドのリストを取得するには、次の手順に従います。
1.作業単位の取得
まず、エンティティ マネージャーに関連付けられた作業単位 (UoW) を取得します。
$uow = $em->getUnitOfWork();
2.変更セットの計算
管理対象エンティティの変更セットの計算をトリガーします:
$uow->computeChangeSets();
3.エンティティ変更セットの取得
UoW の getEntityChangeSet メソッドを使用して、目的のエンティティに加えられた特定の変更を取得します:
$changeset = $uow->getEntityChangeSet($entity);
PreUpdate リスナーに関する注意:
preUpdate リスナー内の変更されたフィールドにアクセスする場合、変更セットはすでに計算されているため、変更セットを再計算しないでください。変更セットを直接取得するだけです。
警告:
このソリューションは Doctrine イベント リスナー内でのみ使用することを目的としており、このコンテキスト外では使用しないでください。そうすることにより、Doctrine の通常の動作が混乱する可能性があります。
以上がDoctrine 2 で変更されたエンティティ フィールドを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。