Doctrine 2 Update von Entität
Ist es möglich, die Aktualisierung einer Entität in einer ähnlichen Weise wie folgt:
$data = new ATest(); //my entity
$data->id = 1; //id 1 already exists, I just want to update this row
$data->name = "ORM Tested"; //changed the name
$entityManager->persist($data);
$entityManager->flush();
Diese einfügen und ändern Sie die Objekt-id anstelle der Aktualisierung der bestehenden Zeile in der Datenbank.
InformationsquelleAutor der Frage Dennis | 2011-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rufen Sie Zusammenführen, statt zu bestehen:
InformationsquelleAutor der Antwort Francesco Casula
Musste ich
InformationsquelleAutor der Antwort Dennis
Oder einfach nur die verwaltete Entität, sondern als ein leerer.
Wenn das Unternehmen ist es bereits gelungen, persist() wird aktualisieren Sie, anstatt Sie zu legen Sie eine neue ein.
InformationsquelleAutor der Antwort Tony Bogdanov
Können Sie auch
getReference
zum aktualisieren einer Entität Eigenschaft mit dem Bezeichner abrufen, ohne den Zustand der Datenbank.http://doctrine-orm.readthedocs.org/en/latest/reference/advanced-configuration.html#reference-proxies
Dadurch wird der Aufbau eines einfachen Proxy zu arbeiten, die mit der Entität per ID anstelle der Instanziierung einer
new Entity
oder explizit immer die Entität aus der Datenbank mitfind()
die dann aktualisiert werden kann, indem flush.Dies ist besonders nützlich für die Aktualisierung der
OneToMany
oderManyToMany
Assoziationen eines Unternehmens.EG:
$case->addTest($data);
Es ist in der Regel eine schlechte Praxis zum manuellen einstellen der identifier von einer neuen Entität, auch wenn die Absicht ist, aktualisieren Sie die Einheit. Stattdessen ist es normalerweise am besten, lassen Sie den EntityManager zu etablieren die entsprechenden Bezeichner. Aus diesem Grund Lehre erzeugt Entitäten standardmäßig mit dem Bezeichner, wie eine private Eigenschaft mit keine setter-Methode.
InformationsquelleAutor der Antwort fyrye