2012-10-15 26 views
5

Doctrine 2にupsert機能が組み込まれていますか?それはそうではありませんが、私は決定的なイエスかノーの答えを見つけることができませんでした。Doctrine 2で(upsert)機能を検索または作成する

もしそうなら、私はもちろん、例やドキュメントを見ることに興味があります。

答えて

3

私は答えを見つけたと信じています。今日(2012年10月15日)現在、Doctrineには「add upsert support」の問題が公開されています。私はDoctrine 2にupsertがサポートされていればこのチケットはまだ開いていないだろうと私は確信しています。

+0

チケットがありますが、ドキュメントは見つかりませんでしたか?あなたは? –

+0

@DimitryKは私の答えを見ます、それはすでに実装されています:) –

4

UpsertはすでにDoctrineに存在します。クエリビルダを使用して

、あなたがfindAndUpdateを設定する必要があります()returnNew()ドキュメントを返すようにしたい場合。 upsert()と設定するとすぐに使用できます。例えば

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

これは私がバケットパターンを実装する方法です。

+0

ありがとう@ Guilherme私はこのアプローチをテストし、あなたの結果に戻ってくる! –

+3

ORMにのみ適用され、ORMには適用されません。 – Im0rtality

+0

@ ImOrtalityによれば、SQLデータベースではなく、Mongoのコンテキストでのみ使用できます。 – fjcero

関連する問題