2

想象一下这个场景:

我有一些必须从数据库中删除的实体的 id 数组(即几个外部键,用于标识第三个表中的记录)和一些必须更新/插入的实体的 id 数组(基于一些在此时无关紧要的标准)。

我能做些什么来删除这些实体?

  • 从数据库加载它们(存储库方式)
  • 调用delete()获取的对象
  • 致电flush()我的实体经理

在那种情况下,我可以使我的所有操作成为原子操作,因为我可以在 call 之前更新/插入其他记录flush()

但是为什么我要从数据库中加载一些记录只是为了删除它们?所以我写了我的个人 DQL 查询(到 repo 中)并调用它。
问题是,如果我将该函数调用到我的 repo 中,此操作会立即完成,因此无法保证我的“原子性”。

那么,我怎样才能通过遵循第二个“删除选项”来“跳过”这个障碍呢?

4

1 回答 1

1

通过使用flush()您正在使 Doctrine隐式启动事务。也可以显式使用事务,这种方法应该可以解决您的问题。

于 2012-11-09T17:21:34.673 回答