尝试克隆并将以下方法添加到您的实体中
public function __clone() { $this->id = null;}您可能需要先分离实体,然后再保留它。我现在没有开发机可以方便地对此进行测试。
$f = clone $e;$em->detach($f);$em->persist($f);$em->flush();
更新资料
刚刚尝试使用简单的SQLite演示。您不需要做任何事情。以下对我有用,而无需添加
__clone()方法或执行其他任何异常操作
$new = clone $old;$em->persist($new);$em->flush();
刷新后,该
$new实体具有新的ID,并保存为数据库中的新行。
我仍然会通过该
__clone()方法将ID属性设为空,因为从纯模型视图来看,它是有意义的。
更新2
深入研究Doctrine代码,这是因为生成的代理类
__clone()使用这一重要行实现
unset($this->_entityPersister, $this->_identifier);



