是否可以使用单个查询向DB插入多个实体? 当我使用here中的示例时,我可以在Web调试器中看到几个查询
2012年8月23日更新
我找到了以下相关链接。我希望有人能够理解批量处理:
主要内容:
有些人似乎在想为什么Doctrine不使用 多插入(插入(...)值(...),(...),(...),...
首先,只有mysql和更新的postgresql版本支持此语法。其次,没有简单的方法来掌握所有 使用时在这样的多插入中生成的标识符 AUTO_INCREMENT或SERIAL和ORM需要标识符以进行标识 管理对象。最后,插入性能很少 ORM的瓶颈。普通插入物的速度足够快 大多数情况下,如果你真的想做快速批量插入,那么a 多插入不是最好的方式,即Postgres COPY或Mysql LOAD DATA INFILE快几个数量级。
这就是为什么不值得努力实现在mysql和postgresql上执行多插入的抽象的原因 一个ORM。 我希望能够清除一些问号。
答案 0 :(得分:0)
我认为会有几个insert语句,但每次“flush”调用只能对数据库进行一次查询。
如上所述 http://doctrine-orm.readthedocs.org/en/2.0.x/reference/working-with-objects.html
每个“persist”将向当前UnitOfWork添加一个操作,然后调用EntityManager#flush(),它将实际写入数据库(在单个事务中封装UnitOfWork的所有操作)。
但我没有检查过上面描述的行为是否是实际行为。
祝你好运, 克里斯托夫