2012-10-15 27 views

回答

3

我相信我找到了答案。截至今天(2012年10月15日),有關教義的公開「add upsert support」問題。我認爲如果Doctrine 2確實支持了這張票,這張票還是不會公開的,所以我想這是我的明確答案。

+0

我可以看到有一張票,但找不到任何文件?你是否? –

+0

@DimitryK看到我的答案,它已經實施:) –

4

Upsert已經存在於學說中。

使用查詢生成器,你必須設置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

僅適用於ODM,不適用於ORM。 – Im0rtality

+0

正如@ ImOrtality所說,它只能用在Mongo的上下文中,而不能用於SQL數據庫。 – fjcero