1

私は SonataAdminBundle (より具体的には Doctrine を使用した SonataORMAdminBundle) を使用して、管理の一部を行っています。これまでのところ、これは非常に便利なバンドルであることが判明しましたが、エンティティの意味のある削除はややトリッキーです。

Tour エンティティに Truck エンティティと Trailer エンティティがあるとしますが、Truck が破棄されると、それは管理アプリケーション全体に表示されなくなります。それにもかかわらず、このトラックに関連するレガシー Tour エンティティがまだ存在する可能性があります。

ユーザーが管理画面でレガシー ツアーを編集する可能性がある場合、この問題にどのように対処すればよいか不明です。エンティティの選択はなくなったのでしょうか?

SoftDelete 拡張バンドルを調べましたが、すべての特定のケースを調整するために多くの作業が必要なようです。

バンドル レベルまたは Doctrine in General でこのような問題に取り組む簡単な方法はありますか?

4

1 に答える 1

3

Sonata スイートで必要に応じてこの動作を実装する方法は、エンティティの新しいブール フィールド「有効」です。次に、フィルターを追加して表示するかどうかを指定し、実際にオブジェクトを削除することはありません。論理的削除はクライアント固有の操作であるため (専用のビジネス ルールが必要な場合があります)、Sonata スイートではネイティブに実装されていません。この場合、実装はニーズに依存する必要があります。

ただし、Simplethings ( https://github.com/simplethings/EntityAudit ) の EntityAuditBundle を SonataDoctrineORMAdminBundle に統合しました。管理クラスを持つ各エンティティは自動的に監査されます。これにより、監査対象エンティティで行われた各編集を追跡できます。(必ずしもあなたが探しているものではありませんが、それでも興味深いかもしれません)。

最後に、あなたが述べたように、SoftDelete がうまくいくかもしれません。ただし、(たとえば preRemove を使用して) 独自のイベント リスナーを用意し、独自の方法でソリューションを実装することもできます。

あなたのソリューションを SonataDoctrineORMAdminBundle に統合する価値があると思われる場合は、気軽に github で問題を作成してください。議論します。

于 2013-11-22T10:16:01.530 に答える