2014-02-21 47 views
1

我想要做一些批量插入到我的數據庫。我已經閱讀了關於它在教條方面的文章,並且想要使用零星的沖刷和清除以防止高內存消耗。不幸的是,所有的實體都在這個過程中被分離出來,不僅是我所插入的那些實體,還有它們之間的關係。學說2與關係的批量插入

我試着將它們重新合併或使用引用。在我目前的情況下,我使用參考,我仍然收到以下錯誤信息:

[學說\ ORM \ ORMInvalidArgumentException]
一個新的實體是通過關係找到 「Strego \ TippBundle \實體\投注#betRound'未配置爲 爲實體:LoadTest GameGroup級聯持久操作。到 解決這個問題:顯式調用 EntityManager#persist()這個未知實體或配置級聯在 映射例如@ManyToOne(..,cascade = {「persist」})持續這個關聯。

相關的編碼是這樣的:

// BetRound 
    print(PHP_EOL."Search for BetROund"); 
    $betRounds = $em->getRepository('StregoTippBundle:BetRound')->findAll(); 
    print(PHP_EOL.'found Betrrounds:'.count($betRounds)); 
    $betRound = current($betRounds); 
... 
// References 
     $betRoundRef = $em->getReference('Strego\\TippBundle\\Entity\\BetRound', $betRound->getId()); 

,並在這裏插入:

foreach($gameRefs as $game){ 
     $bet = new GameBet(); 
     $bet->setBetround($betRoundRef); 
     $bet->setUser($genuser); 
     $bet->setGame($game); 
     $bet->setScoreT1($this->getScore()); 
     $bet->setScoreT2($this->getScore()); 
     $bet->recalculatePoints(); 
     $em->persist($bet); 
    } 

    if(($i % self::$batchSize) == 0){ 
     $em->persist($userGroup); 
     $em->persist($mySelf); 
     $em->flush(); 
     $em->clear(); 

     $em->merge($betRound); 
     $em->merge($userGroup); 
     $em->merge($mySelf); 
    } 

我的整個夾具加載這些數據可以在這裏找到:https://gist.github.com/KeKs0r/a3006768db267311bb35

回答