2012-10-15 5 views

Antwort

3

Ich glaube, ich fand die Antwort. Ab heute (15.10.2012) gibt es ein offenes "add upsert support" Problem für Doctrine. Ich nehme an, dass dieses Ticket nicht noch offen wäre, wenn Doctrine 2 die Unterstützung erhöht hätte, also denke ich, dass es meine definitive Antwort gibt.

+0

Ich kann sehen, es gibt ein Ticket, konnte aber keine Dokumentation finden? Hast du? –

+0

@DimitryK siehe meine Antwort, es ist bereits implementiert :) –

4

Upsert ist bereits in Doctrine vorhanden.

den Query Builder verwenden, müssen Sie findAndUpdate einzustellen() und returnNew() wenn Sie das Dokument zurückkehren möchten. Set upsert() und Sie sind bereit zu gehen.

Zum Beispiel:

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

Dies ist die Art, wie ich einen Eimer Muster implementieren.

+0

Danke @Guilherme Ich werde diesen Ansatz testen und werde mit meinen Ergebnissen zu Ihnen zurückkommen! –

+3

Gilt nur für ODM und nicht für ORM. – Im0rtality

+0

Wie @Im0rtality sagt, könnte es nur im Kontext von Mongo und nicht von SQL-Datenbanken verwendet werden. – fjcero