Mysql
 sql >> Base de données >  >> RDS >> Mysql

Doctrine2 - Insertion multiple en un seul coup

Selon cette réponse , Doctrine2 ne vous permet pas de combiner plusieurs instructions INSERT en une seule :

Vous pouvez en savoir plus sur le traitement par lots de Doctrine2 ici :http://www .doctrine-project.org/blog/doctrine2-batch-processing.html

Vous pouvez soit passer à DBAL, soit recourir au traitement de vos données par petits lots en vidant votre gestionnaire d'entités après un certain nombre d'insertions :

$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();