イベントの多対多関係の変化を検出しようとしていますonFlush。
新しいエンティティがリレーションに追加された場合、またはリレーションが更新された場合 (常に要素を保持)、 を使用して変更を検出し、または$unitOfWork->getScheduledCollectionUpdates()をチェックできます。ここまでは順調ですね。getInsertDiff()getDeleteDiff()
問題は、関係からすべてのエンティティを取り出すときに発生します。「以前は 2 つの関連エンティティがありましたが、現在は関連エンティティがありません。」
リレーションを空のままにすると にアクセスできます$unitOfWork->getScheduledCollectionDeletions()が、どのエンティティが削除されたかを知る方法はありません。
getDeleteDiff()このコレクションでは何もわかりません。getSnapshot()以前にどのエンティティがあったかはわかりません
どのエンティティが多対多の関係から除外されたかを知るにはどうすればよいですか?
完全な実装で Gist を追加しました: $uow->getScheduledCollectionDeletions()(101 行目) を除いて、すべて正常に動作します (最適化が必要な場合があります) 。