Symfony 每次持久化后使用getManager是否更有效?
我可以把$em=$this->getDoctrine()->getManager()放在下面吗;在for循环之外,还是每次都必须获取管理器才能正确地持久化 Gorka LauzirikaI会将它放在循环外,但将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->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();