假设我有实体$e
。是否有任何通用方法将其存储为另一行,该行将具有相同的实体数据但另一个主键?
为什么我需要这个:我正在实施某种时态数据库架构,我只需要创建另一行,而不是更新该行。
尝试克隆并将以下方法添加到您的实体中
public function __clone() {
$this->id = null;
}
您可能需要detach持久化之前的实体。我现在没有方便的开发机器来测试这个。
$f = clone $e;
$em->detach($f);
$em->persist($f);
$em->flush();
Update
刚刚尝试使用一个简单的 SQLite 演示。你不需要做任何事情。以下内容对我有用,无需添加__clone()
方法或做任何其他不寻常的事情
$new = clone $old;
$em->persist($new);
$em->flush();
一旦冲洗完毕,$new
实体有一个新的 ID 并在数据库中保存为新行。
我仍然会通过以下方式将 ID 属性清空__clone()
方法,因为它从纯模型角度来看是有意义的。
Update 2
深入研究 Doctrine 代码,这是因为生成的代理类实现了__clone()
这条重要的线
unset($this->_entityPersister, $this->_identifier);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)