【问题标题】:Symfony 2 - Clone entity to different tableSymfony 2 - 将实体克隆到不同的表
【发布时间】:2012-12-22 09:11:01
【问题描述】:

我正在尝试将实体对象克隆到 Symfony 2 / Doctrine 中的不同表中。知道怎么做吗?

从数据库中检索对象后,我可以像这样克隆它:

$newobject = clone $oldbject;

这给了我一个新对象,我可以将它作为新记录保存到数据库中的同一个表中。其实我不想这样做。我想将对象按原样存储到数据库中的不同表中。但要做到这一点,我必须更改父实体,对吗?如何做到这一点?

【问题讨论】:

    标签: php symfony doctrine-orm entity


    【解决方案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));
        }
    }
    

    这是未经测试的 - 可能有一两个错误,但这应该允许将所有属性从一个对象复制到另一个对象(假设属性在两个对象上具有相同的名称)。

    【讨论】:

    • 效果很好!我也需要使旧属性可访问,但这与新属性相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2012-07-22
    • 2016-03-17
    • 2013-05-31
    相关资源
    最近更新 更多