我的想法是在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)并且它也会被删除(因为它不再被引用)。
另一方面,如果你想删除城市(2),那么国家(1)的删除将失败 - 因为它仍被城市(1)引用 - 并且只有城市实体本身将被删除。
问题在于,Doctrine将回滚整个交易,因此国家和城市都不会被删除。有没有办法改变这种行为?