>

Symfony 2/Doctrine의 엔티티 테이블을 다른 테이블에 복제하려고합니다. 어떻게해야할지 아십니까?

데이터베이스에서 객체를 검색 한 후 다음과 같이 복제 할 수 있습니다 :

$newobject = clone $oldbject;

이것은 데이터베이스의 같은 테이블에 새 레코드로 유지 될 수있는 새로운 객체를 제공합니다. 실제로 나는 이것을하고 싶지 않습니다. 데이터베이스의 다른 테이블에있는 그대로 객체를 저장하고 싶습니다. 그러나 이렇게하려면 부모 엔터티를 변경해야합니다. 이것을 달성하는 방법?


  • 답변 # 1

    하지만 실체를 실제로복제하지는 않습니다. 사실, 당신은 다른 실체를 원합니다. 두 개체는 어떻게 생겼습니까? 그들은 같은 분야가 있습니까? 다음과 같이 할 수 있습니다 :

    $oldEntity = $oldEntity;
    $newEntity = new NewEntity();
    $oldReflection = new \ReflectionObject($oldEntity);
    $newReflection = new \ReflectionObject($newEntity);
    foreach ($oldReflection->getProperties() as $property) {
        if ($newReflection->hasProperty($property->getName())) {
            $newProperty = $newReflection->getProperty($property->getName());
            $newProperty->setAccessible(true);
            $newProperty->setValue($newEntity, $property->getValue($oldEntity));
        }
    }
    
    

    이것은 테스트되지 않았으며 오류가 하나 또는 두 개일 수 있지만, 두 객체에서 같은 이름을 가진 것으로 가정하면 모든 속성을 한 객체에서 다른 객체로 복사 할 수 있어야합니다.

관련 자료

  • 이전 python - while 루프 원 라이너
  • 다음 html - 즉 조건문은 설명이 필요하다