sql >> Base de Datos >  >> RDS >> Mysql

Doctrine2 - Inserción múltiple en una sola toma

Según esta respuesta , Doctrine2 no te permite combinar varias sentencias INSERT en una sola:

Puedes leer más sobre el procesamiento por lotes de Doctrine2 aquí:http://www .doctrine-project.org/blog/doctrine2-batch-processing.html

Puede cambiar a DBAL o recurrir al procesamiento de sus datos en lotes pequeños vaciando su administrador de entidad después de una cantidad determinada de inserciones:

$batchSize = 20;

foreach ($items as $i => $item) {
     $product = new Product($item['datas']);

     $em->persist($product);

     // flush everything to the database every 20 inserts
     if (($i % $batchSize) == 0) {
         $em->flush();
         $em->clear();
    }
}

// flush the remaining objects
$em->flush();
$em->clear();