우리는Symfony2, Doctrine2, EntityManager의 마지막 행동이
foreach ($rwst as $row)
{
$loopData = XmlFunctions::getXmlAttrAsArray($row);
if (!$loopData)
{
return false;
}
$oCharacters = new XmlAccountCharacters();
$oCharacters
->setKeyID($this->keyID)
->setCharacterID($loopData['characterID'])
->setCharacterName($loopData['name'])
->setCorporationID($loopData['corporationID'])
->setCorporationName($loopData['corporationName']);
$this->sEntityManager->persist($oCharacters);
}
$this->sEntityManager->flush();
포인트는 우리가
$loopData
에 FALSE있을 때 우리가 현재 함수를 종료하는 것입니다이 비활성화합니다. 그러나. 이미지 foreach의 두 번째 항목에서 false가되므로 첫 번째 엔터티는 EntityNamager에 유지됩니다. 나는 어떻게 그것을 밖으로 얻을 수 있습니까? next (다른 서비스 \ 컨트롤러에서도) -> flush()가 그것을 저장하기 때문에 우리는 원하지 않습니다.
하시나요? 당신은 정말로 컨트롤러를 flush()가 호출 될 것이라고 말했듯이, 실제로는 – nifr
을 저장하지 않으려 고 할 때만 persist를 호출해야합니다. 이것은 db 엔터티에 삽입 될 것입니다. – user1954544
간단한 예제로 하나의 서비스에서 유지하고 다른 하나의 엔티티에서 첫 번째 엔티티 플러시를 호출하려고하면 – user1954544