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