나는 Symfony의 다음 문서 클래스를 통해 Doctrine ODM (관련 속성 만 표시하고 있음)을 사용하여 연결된 Mongo 데이터베이스를 보유하고 있습니다. 값이 변경되면 임베디드 문서 복제 만 가능합니다.
/**
* @MongoDB\Document
* @MongoDB\InheritanceType("COLLECTION_PER_CLASS")
*/
class Feature {
/** @MongoDB\EmbedOne(targetDocument="FeatureProperties") */
protected $properties;
}
/** @MongoDB\Document */
class City extends Feature {}
/** @MongoDB\EmbeddedDocument */
class FeatureProperties {
/** @MongoDB\String */
protected $name;
}
나는 본질적
properties
,
properties.name
의 포함, 내 컨트롤러에
City
를 복제하는 것을 시도하고있다.
이 작업을 수행하려면 QueryBuilder를 사용하여 도시를 가져 와서 $city_origin
이라고 부릅니다. 그런 다음, 여기에 내가 그것을 복제 방법은 다음과 같습니다
$new_city = clone $city_origin;
$city_name = $city_origin->getProperties()->getName();
// $city_name .= ' ';
$documentManager->detach($city_origin);
$new_city->setId('_' . $city_origin->getId());
$new_city->getProperties()->setName($city_name);
$documentManager->persist($new_city);
$documentManager->flush();
새 문서가 만들어
하지만 properties
및 properties.name
존재하지 않습니다. 이상한 점은 $city_name
을 수정 한 행의 주석을 지우면 수정 된 값으로 properties.name
이 생성된다는 것입니다. $city_name
을 $city_origin
에서 가져 오는 대신 수동으로 값을 입력하면 (문자열로) 속성도 생성되지 않습니다. 내 컬렉션에 다른 City
의 이름을 지정하면 문제가 없습니다.
전체 문서를 포함 된 문서로 복제하는 것이 이상적입니다. 어떻게 할 수 있습니까?