2013-04-05 86 views

回答

15

$em->merge()用于取出已从实体管理器的上下文中取出并重新附加它的实体。

  • 如果实体从未被管理,合并等同于持久化。
  • 如果实体被分离或序列化(可能放入缓存),则合并或多或少地查找数据存储中实体的ID,然后开始跟踪从该点开始的对实体的任何更改。

级联合并将此行为扩展到您正在合并的实体中。这意味着更改将级联到关联,而不仅仅是要合并的实体。

+0

非常感谢您的支持!我也有类似的问题,实体经理关闭后,我不得不重置经理。发生了什么事情是,应更新的实体,插入声明,并出现外键约束错误。使用$ em-> merge()为我解决了它,因为它将实体标记为再次管理。 – tomazahlin 2014-12-01 14:56:17

+0

我知道这个答案是旧的,但仅供参考,merge()将在Doctrine3中被移除https://github.com/doctrine/doctrine2/blob/master/UPGRADE.md – Patito 2018-02-09 12:05:03