2013-04-05 2 views

답변

15

$em->merge()은 엔티티 관리자의 컨텍스트에서 가져온 엔티티를 가져와 '다시 첨부'하는 데 사용됩니다.

  • 엔터티가 관리되지 않는 경우 병합은 persist와 같습니다.
  • 엔티티가 분리되거나 직렬화 된 경우 (아마도 캐시에 넣음) 데이터 저장소의 엔티티 ID를 더 많이 또는 덜 병합 한 다음 해당 시점부터 엔티티에 대한 변경 사항을 추적하기 시작합니다.

병합을 계단식으로 연결하면 병합중인 병합 된 엔터티에이 동작이 확장됩니다. 이는 변경 사항이 병합되는 엔티티뿐만 아니라 연관에 계단식으로 연결됨을 의미합니다.

+0

고맙습니다. 엔티티 관리자가 닫히고 매니저를 재설정해야만하는 비슷한 문제도있었습니다. 무슨 일이 있었는지는 엔티티가 업데이트되어야하고, 삽입 문과 외래 키 제약 조건 오류가 나타난 개체입니다. $ em-> merge()를 사용하면 엔터티를 다시 관리 대상으로 표시했기 때문에이를 해결했습니다. – tomazahlin

+0

이 답변은 오래된 것입니다. 참고로 merge()는 Doctrine3에서 삭제 될 것입니다. https://github.com/doctrine/doctrine2/blob/master/UPGRADE.md – Patito