Symfony2和Doctrine:如何进行原子操作?

时间:2012-11-09 15:31:45

标签: symfony doctrine-orm

想象一下这种情况:

我有一些必须从数据库中删除的实体的ID(即一些外部键,用于将记录标识到第三个表中)以及一些必须更新/插入的实体的ID数组(根据一些标准,在这一刻,无关紧要)。

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

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

在那种情况下,我可以将所有操作变为原子,因为我可以在调用flush()之前更新/插入其他记录。

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

那么,如何按照第二个“删除选项”“跳过”这个障碍?

1 个答案:

答案 0 :(得分:1)

通过使用flush(),您可以让Doctrine开始transactions implicitly。也可以use transactions explicitly,这种方法可以解决您的问题。