Ho un documento con un documento incorporato. Quando creo un oggetto per la prima volta tutto funziona correttamente, ma quando provo ad aggiornare un documento, il documento incorporato non viene aggiornato.Come aggiornare i documenti incorporati in Doctrine MongoDB?
Nella mia domanda interrogare un documento, aggiornare i valori e persisterli nell'archivio dati.
// Variant A – Does not work
$document = ... // find from data store
$document->setValueA('Hello World');
$document->getDocB()->setValueB('foo baz');
$om->persist($document);
$om->flush();
Se non aggiorno il documento incorporato, ma impostare una nuova tutto funziona bene:
// Variant B - Does work
$document = ... // find from data store
$document->setValueB('Hello World 2');
$document->setDocB(new DocumentB());
$document->getDocB()->setValueB('foo baz 2');
$om->persist($document);
$om->flush();
Come ho detto, Variante B funziona bene. Tuttavia, nella mia applicazione i documenti sono più complessi e per me sarebbe poco pratico creare un nuovo oggetto per il documento incorporato ogni volta che devo aggiornarlo. Esiste un metodo per dire a Doctrine ODM di esaminare i valori di un documento incorporato per decidere se deve essere aggiornato?
Problemi di sostituzione di un documento incorporato con uno diverso. Nel mio caso, DocumentB non è un EmbeddedDocument, ma piuttosto un documento. L'uso del distacco sull'oggetto come hai mostrato qui ha funzionato anche in questo scenario. – Onema