【发布时间】:2014-09-10 19:32:44
【问题描述】:
我有一个 CustomerAccount 实体。在该实体通过表单对其进行更改之后,但在将实体持久保存到数据库之前,我需要获取与当前存在于数据库中的实体相同的 CustomerAccount 的新副本。我需要这样做的原因是我想用我的服务中的新旧数据触发一个更改的事件。
我使用的一个 hack 是 $oldAccount = unserialize(serialize($account)); 并将旧的传递给我的服务,但这真的是 hackish。
我真正想做的是让 Doctrine 拉回原始实体的副本(同时保留对新版本的更改)。
这可能吗?
更新
目前看来,我真正想做的事情在 Doctrine 的架构方式下最终是不可能的。
更新 2
我在底部添加了最终使用的解决方案。我对它并不完全满意,因为它感觉很老套,但它可以完成工作并让我继续前进。
【问题讨论】:
-
是的,我已经在另一个地方这样做了。但我不希望它成为我的锤子。这是我想告诉 Doctrine “不,请从数据库中重新获取实体。我真的,真的知道我在做什么。”
-
@Fabian,没有。这将使用数据库中的数据消除对原始实体的更改。我真正想要的是两个实体。一个前更改,一个后更改。但不必经历回旋或泄漏抽象。
标签: php symfony doctrine-orm