在foreach循环中,symfony – Doctrine2 $em-> persist($entity)

我现在在一个地方,我需要在foreach循环中创建或更新实体。

所以我在做以下(短代码):

foreach ($dataset as $data) {
    $entity = new Entity();

    // ---- Some setting operations on the entity

    $em->persist($entity);
}

$em->flush();

我期待的是,Doctrine管理实体,然后用一个语句将实体插入到表中。

但是它发生了,这个教义为每个创建的实体做了一个声明。
因为$ dataset数组可以很大(很多实体创建),我想把它包装成一个语句。

我该如何实现?

解决方法

greg0ire所示,此链接描述了Doctrine如何优化INSERT语句: http://www.slideshare.net/jwage/doctrine-2-not-the-same-old-php-orm(从幻灯片#47看)。它使用事务,但不会在唯一的语句中对同一对象的INSERT进行分组。

如果您真的需要将您传递给数据库服务器的数据量一次分配,我建议您每个x语句处理EntityManager :: flush()。

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效