원칙 2에서 엔티티를 다른 행으로 다시 저장하는 방법
엔티티가 있다고 칩시다.$e
. 동일한 엔티티 데이터이지만 다른 기본 키를 갖는 다른 행으로 저장할 수 있는 일반적인 방법이 있습니까?
이것이 필요한 이유:Temporal Database 스키마를 구현하고 있는데 행을 업데이트하는 대신 다른 스키마를 작성해야 합니다.
복제를 시도하고 엔티티에 다음 메서드를 추가하십시오.
public function __clone() {
$this->id = null;
}
엔티티를 지속하기 전에 엔티티를 분리해야 할 수 있습니다.지금은 이걸 테스트할 개발 기계가 없어요
$f = clone $e;
$em->detach($f);
$em->persist($f);
$em->flush();
갱신하다
간단한 SQLite 데모를 사용해 봤습니다.당신은 아무것도 할 필요가 없어요.다음 항목은 추가 없이 작동했습니다.__clone()
방법, 또는 평범하지 않은 것을 하는 것
$new = clone $old;
$em->persist($new);
$em->flush();
일단 플래시를 하면$new
엔티티가 새 ID를 가지며 DB에 새 행으로 저장되었습니다.
그래도 ID 속성을 무효로 할 수 있습니다.__clone()
순수한 모델 뷰에서 이치에 맞는 방법.
업데이트 2
이는 생성된 프록시 클래스가 구현되기 때문입니다.__clone()
이 중요한 대사를 가지고
unset($this->_entityPersister, $this->_identifier);
나는 그저 할 뿐이다:
/**
* __clone
*
* @return void
*/
public function __clone()
{
$this->id = null;
}
상세한 것에 대하여는, https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/cookbook/implementing-wakeup-or-clone.html 를 참조해 주세요.
동일한 클래스의 새 개체에 데이터를 복사하고 유지하면 됩니다.심플하게!
언급URL : https://stackoverflow.com/questions/9071094/how-to-re-save-the-entity-as-another-row-in-doctrine-2
'itsource' 카테고리의 다른 글
배열에서 선택한 모든 확인란 가져오기 (0) | 2022.09.12 |
---|---|
각 유형에서 가장 큰 행 선택 방법 (0) | 2022.09.12 |
지난달 날짜를 php로 가져오는 중 (0) | 2022.09.12 |
SQL select return 값을 바꾸는 방법 (0) | 2022.09.12 |
스캐너 클래스에서 next() 메서드와 nextLine() 메서드의 차이점은 무엇입니까? (0) | 2022.09.12 |