何时是刷新实体/对象管理器的最佳“时间”? 它应该在每次持续操作之后吗?或者它应该运行一次,例如执行postDispatch?
答案 0 :(得分:3)
在每个持久化之后运行它实际上是一个反模式。理想情况下,您应该在请求结束时运行一次。
我不会把它放在postDispatch处理程序中,因为这意味着它将在每个请求之后运行,这将是代价高昂的性能,例如,列表页面,其中列出具有许多关系的实体,因为Doctrine将不得不检查许多实体的变化。
将其置于修改数据的操作的末尾。
答案 1 :(得分:0)
理想情况下,在请求结束时执行一次。但是,如果您使用的实体过多,则最好尽快刷新,并且不要让工作单元过载实体。这是事情变得很奇怪的时候,因为spl_object_hash的问题不能完全识别所有这些对象。
在完成某些实体的操作后,也将立即使用clear()。