Versuchen Sie das Klonen und fügen Sie Ihrer Entität die folgende Methode hinzu
public function __clone() {
$this->id = null;
}
Sie müssen möglicherweise trennen das Unternehmen , bevor es persistierenden. Ich habe meine Entwicklungsmaschine momentan nicht zur Hand, um dies zu testen.
$f = clone $e;
$em->detach($f);
$em->persist($f);
$em->flush();
Aktualisieren
Ich habe gerade versucht, eine einfache SQLite-Demo zu verwenden. Sie sollten nichts tun müssen. Das Folgende funktionierte für mich, ohne eine __clone()
Methode hinzuzufügen oder etwas Ungewöhnliches zu tun
$new = clone $old;
$em->persist($new);
$em->flush();
Nach dem Löschen hatte die $new
Entität eine neue ID und wurde als neue Zeile in der Datenbank gespeichert.
Ich würde die ID-Eigenschaft immer noch über die __clone()
Methode auf Null setzen , da dies aus einer reinen Modellansicht sinnvoll ist.
Update 2
Dies liegt daran, dass die generierten Proxy-Klassen __clone()
mit dieser wichtigen Zeile implementiert werden
unset($this->_entityPersister, $this->_identifier);
$f = clone $e
? Möglicherweise müssen Sie die__clone()
Methode implementieren