Я пытаюсь клонировать объект-объект в другую таблицу в Symfony 2 / Doctrine. есть идеи как это сделать?
После извлечения объекта из базы данных я могу клонировать его следующим образом:
$newobject = clone $oldbject;
Это дает мне новый объект, который я могу сохранить в качестве новой записи в той же таблице в базе данных. На самом деле я не хочу этого делать. Я хочу сохранить объект так, как он есть в другой таблице в базе данных. Но для этого мне пришлось бы изменить родительскую сущность, верно? Как достичь этого?
Но тогда вы не клонируете сущность. На самом деле вам нужен другой объект. Как выглядят два объекта? Имеют ли они те же поля? Вы могли бы сделать что-то вроде этого:
$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)); } }
Это не проверено – и может иметь ошибку или два, но это должно позволить копировать все свойства из одного объекта в другой (при условии, что свойства имеют одинаковое имя для обоих объектов).