Symfony 每次持久化后使用getManager是否更有效?

Symfony 每次持久化后使用getManager是否更有效?,symfony,doctrine-orm,Symfony,Doctrine Orm,我可以把$em=$this->getDoctrine()->getManager()放在下面吗;在for循环之外,还是每次都必须获取管理器才能正确地持久化 Gorka LauzirikaI会将它放在循环外,但将$em->flush()放在循环内 for(...) { $menuItem = new MenuItem(); $menuItem->setName($itemName[$i]); $menuItem->setDescription(

我可以把$em=$this->getDoctrine()->getManager()放在下面吗;在for循环之外,还是每次都必须获取管理器才能正确地持久化

Gorka LauzirikaI会将它放在循环外,但将
$em->flush()
放在循环内

 for(...) {
     $menuItem = new MenuItem();     
     $menuItem->setName($itemName[$i]);
     $menuItem->setDescription($itemDescription[$i]);
     $menuItem->setprice($itemPrice[$i]);
     $menuItem->setMenuCatagory($menuCatagory);

     $em = $this->getDoctrine()->getManager();
     $em->persist($menuCatagory);    
     $em->persist($menuItem);        
 }
 $em->flush(); 
更新


通过在循环外调用flush(),条令只需要执行一个查询,正如Gorka Lauzirika在评论中提到的那样。

$em->flush()
放在循环外也是正确的。更重要的是,建议您提高性能,因为您只运行一次查询,而不会丢失任何信息。如果您是对的,我对
flush
的工作原理有错误的想法。解释有关使用
flush
的更多信息。我更新了我的答案
$em = $this->getDoctrine()->getManager();
for(...) {
    $menuItem = new MenuItem();     
    $menuItem->setName($itemName[$i]);
    $menuItem->setDescription($itemDescription[$i]);
    $menuItem->setprice($itemPrice[$i]);
    $menuItem->setMenuCatagory($menuCatagory);


    $em->persist($menuCatagory);    
    $em->persist($menuItem); 

}
$em->flush();