私の考えは、GC 環境で単純なオブジェクトを扱うのと同じくらい気楽に (ORM を通じて) データベースを使用することです。
基本的な考え方はcascade-remove
、テーブル間のほとんどの接続で使用し、失敗した手順をスキップすることです。簡単な例で:
Country (id, name)
1, UK
2, Germany
City (id, name, country)
1, London, 1
2, Brighton, 1
3, Schweinfurt, 2
このように City(3) を削除すると、削除は Country(2) にカスケードされ、それも削除されます (参照されなくなったため)。
一方、City(2) を削除したい場合、Country(1) はまだ City(1) によって参照されているため、Country(1) の削除は失敗し、City エンティティのみが削除されます。
問題は、Doctrine がトランザクション全体をロールバックするため、Country も City も削除されないことです。この動作を変更する方法はありますか?