2014-01-09 1 views
1
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를해야합니까?각 지속 후에 getManager가 더 효율적입니까?

답변

1

Gorka Lauzirika 루프 외부에 배치 하겠지만 $em->flush()을 루프 안에 넣습니다. 주석을 고르 카 Lauzirika 언급 된 바와 같이 외부 루프()를 호출함으로써 수세식

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

UPDATE

는 교리 만, 하나 개의 질의를 수행해야한다.

+1

'$ em-> flush()'를 루프 외부에 두는 것도 올 바릅니다. 더군다나 정보를 잃지 않고 쿼리를 한 번만 실행하면 성능이 향상됩니다. –

+0

맞습니다. '플러시'작동 방식이 잘못되었습니다. [docs에 대한이 링크] (http://symfony.com/doc/current/book/doctrine.html#persisting-objects-to-the-database)는'flush'의 사용에 대해 더 자세히 설명합니다. 내 대답을 업데이트했습니다. – Sehael

관련 문제