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正确持久?
答案 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在评论中所提到的那样。