2013-04-05 16 views

risposta

15

$em->merge() viene utilizzato per prendere un'entità che è stata sottratta dal contesto del gestore di entità e "riattaccarla".

  • Se l'entità non è mai stata gestita, l'unione equivale a persistere.
  • Se l'entità è stata scollegata o serializzata (inserire una cache, forse), quindi unire più o meno cerca l'id dell'entità nell'archivio dati e quindi inizia a tracciare eventuali modifiche all'entità da quel punto in poi.

Il collegamento in cascata di un'unione estende questo comportamento alle entità associate di quello che si sta unendo. Ciò significa che le modifiche sono collegate in cascata alle associazioni e non solo all'entità che viene unita.

+0

Grazie mille per questo! Ho anche avuto un problema simile, dopo che il gestore dell'entità si è chiuso e ho dovuto resettare il manager. Quello che è successo è stato che le entità che dovrebbero essere aggiornate, hanno ottenuto la dichiarazione di inserimento e naturalmente è apparso l'errore di vincolo di chiave esterna. Usando $ em-> merge() l'ho risolto per me, perché ha contrassegnato l'entità come gestita di nuovo. – tomazahlin

+0

So che questa risposta è vecchia, ma solo per riferimento, l'unione() verrà rimossa in Doctrine3 https://github.com/doctrine/doctrine2/blob/master/UPGRADE.md – Patito

Problemi correlati