2012-10-15 9 views

risposta

3

Credo di aver trovato la risposta. Ad oggi (15/10/2012), c'è un problema "add upsert support" aperto per Doctrine. Presumo che questo ticket non sarebbe ancora aperto se Doctrine 2 avesse un supporto di upsert, quindi immagino che ci sia la mia risposta definitiva.

+0

Posso vedere che c'è un biglietto, ma non è stato possibile trovare alcuna documentazione? Hai fatto? –

+0

@DimitryK vedi la mia risposta, è già implementata :) –

4

Upsert è già presente in Doctrine.

Utilizzando il generatore di query, è necessario impostare findAndUpdate() e returnNew() se si vuole restituire il documento. Imposta upsert() e sei pronto per partire.

Ad esempio:

$documentMannager->createQueryBuilder('App\Domain') 
->findAndUpdate() 
->returnNew() 
->field('_id')->equals($id) 
->field('page')->equals($page) 
->field('count')->inc(1) 
->upsert() 
->getQuery() 
->execute(); 

Questo è il modo implemento un modello secchio.

+0

Grazie @Guilherme Proverò questo approccio e tornerò da te con i miei risultati! –

+3

Si applica solo a ODM e non a ORM. – Im0rtality

+0

Come dice @ Im0rtality, potrebbe essere utilizzato solo nel contesto di Mongo e non dei database SQL. – fjcero