将Doctrine的EntityManager保存在会话变量中

时间:2011-04-12 20:41:48

标签: php doctrine-orm session-variables entitymanager

我正在开发一个Web应用程序,我将使用docrine框架来管理, 并发请求和事务性查询(如插入或更新头部和行记录)。

对于网络必需品,我想在不同的步骤中拆分操作: 第一步:我有一个允许用户插入HeadTable记录的页面,然后我将信息发送到服务器,创建一个实体并将其存储在具有持久功能的EntityManager中。

第二步:用户将编辑并插入所有RowsTable记录。如果完成所有操作,就像之前一样,我将所有数据发送到服务器,创建实体并将它们关联到HeadTable记录。

最后一步:当用户确认他所做的一切时,我触发EntityManager的刷新操作并在单个原子事务中将所有提交到DataBase。 为了保持所有这些步骤,我将EntityManager放在会话变量中,并在刷新操作后将其删除。

一切似乎都很好,但我想知道这是解决问题的正确方法,还是有更好的方法。

1 个答案:

答案 0 :(得分:2)

尝试是合理的事。

但是,我可能会避免在请求中存储实体管理器。它需要担心数据库连接,因此可能会中断。

可以做的只是将您的实体存储在会话中。将它们从实体管理器中分离出来,然后在下一个请求中将它们合并()。