0

doctrine 2 で symfony2 を使用しています。

ユーザーが外部ソースからデータベースにデータをインポートする機能を開発しました。「元に戻す」機能を実装する必要があります。基本的に、ユーザーはワンクリックでインポート操作全体を取り消すことができる必要があります。

動作は mysql ロールバックまたはデータのサブセットの mysqldump + 再インポートと同じですが、Doctrine 2 を使用してアプリケーション レベルで作業する必要があります。

プロキシのシリアライズとアンシリアライズ、または Unit of work の操作はどちらもうまくいきませんでした。現在、エンティティ (および指定された関係) を配列に保存/復元するためのユーティリティ クラスを実装していますが、すべての関係を管理するのは大変な作業です。

もっと簡単な解決策はありますか?

4

1 に答える 1

0

以下は非常に煩わしいため、洗練されたソリューションとは考えていませんが、役立つ可能性があり、おそらく非常に効率的です。

エンティティごとに、インポートエンティティを参照するインポートフィールドを指定します。元に戻すときは、特定のImportにマップされているすべてのエンティティを削除するだけです。エンティティを変更してインポートフィールドを追加するのが煩わしい場合、またはオプションではない場合、インポートを特定のエンティティにマップする OneToOne 関係を検討できます。これにより、カップリングもいくらか減少します。

インポートも更新で構成されている場合は、明らかに複雑になります。インポート後にデータに加えられた変更についても同じことが言えます。復帰は失敗するか、新しいエンティティにカスケードされます。

于 2012-09-13T11:44:03.360 に答える