每次持续后,getManager是否更有效?

时间:2014-01-09 17:13:49

标签: symfony doctrine-orm

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

我可以放置$ em = $ this-> getDoctrine() - > getManager();在for循环之外还是每次都要让getManager正确持久?

1 个答案:

答案 0 :(得分:1)

Gorka Lauzirika我会将它放在循环之外,但将$em->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();   

更新

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