想象一下这种情况:
我有一些必须从数据库中删除的实体的ID(即一些外部键,用于将记录标识到第三个表中)以及一些必须更新/插入的实体的ID数组(根据一些标准,在这一刻,无关紧要)。
我可以做些什么来删除这些实体?
delete()
flush()
到我的实体经理在那种情况下,我可以将所有操作变为原子,因为我可以在调用flush()
之前更新/插入其他记录。
但为什么我要从db加载一些记录只是为了删除它们?所以我写了我的个人DQL查询(进入回购)并调用它 问题是,如果我将该函数调用到我的repo中,则此操作立即完成,因此无法保证我的“原子性”。
那么,如何按照第二个“删除选项”“跳过”这个障碍?
答案 0 :(得分:1)
通过使用flush()
,您可以让Doctrine开始transactions implicitly。也可以use transactions explicitly,这种方法可以解决您的问题。