この回答によると 、Doctrine2では、複数のINSERTステートメントを1つに結合することはできません:
Doctrine2バッチ処理の詳細については、次を参照してください: http:// www .doctrine-project.org / blog / doctrine2-batch-processing.html
DBALに切り替えるか、設定された量の挿入後にエンティティマネージャーをフラッシュすることで、データを小さなバッチで処理することに頼ることができます。
$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();