2011-12-14 83 views
1

請看下面的代碼ID值:Doctrine2與Symfony2的:在復位時,保存在foreach循環

$passwords = array('aaaa', 'bbbb', 'ccccc', 'dddd', 'eeeee'); 

$em = $this->getDoctrine()->getEntityManager(); 
$foo = new Foo(); 
$foo->setName('Joe Bloggs'); 
$foo->setTitle('Mr'); 
foreach ($passwords as $password) { 
    $foo->setPassword($password); 
    $em->persist($foo); 
    $em->flush(); 
} 

在這裏,當我嘗試保存$foo對象,我希望把它保存x次,其中X是$passwords的長度,但是它只是插入一次值,然後將其更新4次。

有沒有人知道我怎麼能做到這一點,以便它插入記錄5次。

由於

回答

3

創建更新之間的選擇的對象標識製作:

  • 新對象=>創建
  • 現有對象=>更新

所以,不要試圖通過不重複setName來優化治療nd setTitle,但是你只能執行flush()一次;):

$passwords = array('aaaa', 'bbbb', 'ccccc', 'dddd', 'eeeee'); 

$em = $this->getDoctrine()->getEntityManager(); 
foreach ($passwords as $password) { 
    $foo = new Foo(); 
    $foo->setName('Joe Bloggs'); 
    $foo->setTitle('Mr'); 
    $foo->setPassword($password); 
    $em->persist($foo); 
} 
$em->flush();