しかし、実際にはエンティティのクローンを作成しているわけではありません。実際には、別のエンティティが必要です。2つのエンティティはどのように見えますか? 彼らは同じフィールドを持っていますか?次のようなことができます。
$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));
}
}
これはテストされておらず、エラーが 1 つまたは 2 つある可能性がありますが、これにより、すべてのプロパティを 1 つのオブジェクトから別のオブジェクトにコピーできるはずです (プロパティが両方のオブジェクトで同じ名前であると仮定します)。