【发布时间】:2012-10-15 15:17:15
【问题描述】:
Doctrine 2 是否内置了 upsert 功能?似乎没有,但我无法找到明确的“是”或“否”答案。
如果是这样,我当然有兴趣查看示例和/或一些文档。
【问题讨论】:
-
这似乎是一个重复的问题。 stackoverflow.com/q/1132571/1644036
标签: doctrine doctrine-orm
Doctrine 2 是否内置了 upsert 功能?似乎没有,但我无法找到明确的“是”或“否”答案。
如果是这样,我当然有兴趣查看示例和/或一些文档。
【问题讨论】:
标签: doctrine doctrine-orm
我相信我找到了答案。截至今天(2012 年 10 月 15 日),Doctrine 有一个未解决的“add upsert support”问题。我认为如果 Doctrine 2 确实有 upsert 支持,这张票不会仍然开放,所以我想这是我的明确答案。
【讨论】:
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();
这是我实现桶模式的方式。
【讨论】: