2013-06-28 1 views
4

엔티티의 저장소 내에서 주어진 id를 사용하지 않으면 주어진 id로 엔티티를 가져 오거나 새로운 엔티티를 만들고 싶습니다. 멀리. 내 솔루션은 ID가있는 새 엔터티를 만드는 것입니다. 가능하다면 반환하고, 그렇지 않다면 나는 excisting 것을로드하고 싶습니다. 매우 나쁘다. 그것은 가능하지 않다. 왜냐하면 entitymanager가 닫혀 있기 때문이다.zend framework 2 with doctrine, 예외로 닫힌 EntityManager를 다시 여는 방법

class TestRepository extends Repository { 

    // create a new entity or load the existing one 
    public function getEntity($pkey) { 
     $entity = new Entity($pkey); // create a new entity and set its id to $pkey 
     $this->getEntityManager()->persist($language); 
     try { 
      $this->getEntityManager()->flush(); // success if $pkey isn't used 
     } catch (DBALException $e) { 
      // this DBALException is catched correct 
      // fail - load the existing one 
      $entity = $this->find(array($pkey)); // another exception is thrown 
      // The EntityManager is closed. 
     } 
     return $entity; 
    } 

} 

어떻게 EntityManger를 다시 열 수 있습니까?

+0

죄송합니다. 몇 가지 오타가 있습니다. $ language는 $ entity를 의미하고 find (array ($ pkey))는 find ($ pkey)를 의미합니다. – exoon

답변

0

아직 존재하지 않는 모름의 정의 된 기본 키를 사용하여 엔티티를 유지하려고하는 이유는 무엇입니까?

간단한 find()를 먼저 수행하고 아무런 결과도 반환하지 않으면 엔티티를 만들고 지속합니다.

모하메드.