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

前端之家收集整理的这篇文章主要介绍了在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()。

猜你在找的CSS相关文章