【发布时间】:2019-02-21 19:13:43
【问题描述】:
我有一个多页表单,它收集一些数据,然后将其保存到多个表中。在 symfony 4 中将实体保存到会话的正确方法是什么?我看到文档here 指出:
在 Doctrine 中,实体对象必须由 EntityManager “管理” 可更新。保存到会话中的实体不在 下一个请求了。这意味着您必须注册这些 如果您想更改实体或使用实体管理器,请再次使用它们 它们作为其他实体之间引用的一部分。你可以实现 通过调用 EntityManager#merge() 来实现。
和
序列化到会话中的实体通常也包含对其他实体的引用。想想用户实体对他的文章、群组、照片或许多其他不同实体的引用。如果您将此对象序列化到会话中,那么您也不想序列化相关实体。这就是为什么你应该在这个对象上调用 EntityManager#detach() 或者在你的实体上实现 __sleep() 魔法方法。
我需要用 symfony 做这个吗?我会怎么做?
也许更好的问题是 - 我应该使用带有会话的实体,还是应该将它们存储在一个类中,最后只将所有类信息加载到实体中?
【问题讨论】:
-
我不知道您发布的文档,但 symfony 可能不需要?由于与您的原因完全不同的原因,我有一个脚本,它创建一个实体,与关联的实体记录建立适当的链接(通过多对一关系),然后保存到会话变量。它实际上存储了一个实体数组。然后在下一次通过时,我将这些中的每一个都保存在 foreach() 循环中。我没有问题。不确定“官方”答案。如果有帮助,我可以在答案中发布一些代码。
标签: php doctrine session-variables symfony4 entities