Doctrine orm ZF2原则:何时刷新ObjectManager

Doctrine orm ZF2原则:何时刷新ObjectManager,doctrine-orm,zend-framework2,flush,Doctrine Orm,Zend Framework2,Flush,刷新实体/对象管理器的最佳“时间”是什么时候? 是否应该在每次操作后进行?或者应该在例如postDispatch上运行一次?在每次持久化之后运行它实际上是一种反模式。理想情况下,应该在请求结束时运行一次 我不会把它放在postDispatch处理程序中,因为这意味着它将在每个请求之后运行,这将是代价高昂的性能,例如,在列表页面上,您列出了具有许多关系的实体,因为条令必须检查许多实体的更改 将其放在修改数据的操作结束时。理想情况下,在请求结束时放一次。但是如果您使用的实体太多,最好尽快刷新,并且不

刷新实体/对象管理器的最佳“时间”是什么时候?
是否应该在每次操作后进行?或者应该在例如postDispatch上运行一次?

在每次持久化之后运行它实际上是一种反模式。理想情况下,应该在请求结束时运行一次

我不会把它放在postDispatch处理程序中,因为这意味着它将在每个请求之后运行,这将是代价高昂的性能,例如,在列表页面上,您列出了具有许多关系的实体,因为条令必须检查许多实体的更改


将其放在修改数据的操作结束时。

理想情况下,在请求结束时放一次。但是如果您使用的实体太多,最好尽快刷新,并且不要让工作单元因实体而过载。这是事情变得非常奇怪的时候,因为spl\u object\u散列的问题并不能识别所有具有唯一性的对象


完成某些实体并将开始其他实体后,也可以使用clear()。

postDepatch的确切含义是什么?正如条令文档所建议的,在调用flush($Entity)时,您可以明确地刷新单个实体以避免各种实体的整个映射?这就是你的意思吗?我的意思是最好的做法是,在我坚持某件事后立即刷新EntityManager,还是在控制器被调度后刷新EntityManager更好?你能给出一个代码示例,说明在调度后如何计划刷新吗?我可能误解了你。U通常在验证数据后保持,然后刷新。