来自另一个实体的学说更新实体



我有两个相同类型的教义实体,我希望用另一个实体的内容替换一个实体的内容,除了我想保留的 ID。

不想一一设置所有属性,我想要一种通用的方法。

今天我正在序列化一个对象并将其反序列化为另一个对象,它有点工作,但我想知道是否有更好的方法来做到这一点?

例如,要将 $object 1 的内容复制到 $object 2,同时保持 id 为 $object 2(两者都已经由教义管理),我这样做:

$json = $serializer->serialize($object1, 'json');
$serializer->deserialize($json, Entity::class, 
              'json', array('object_to_populate' => $object2));

这对于引用的属性效果不佳,有人知道如何以更好的方式实现这一目标吗?

谢谢。

我会像这样在对象中实现 setters 和 getters:

/**
 * In $object1 
 * @return array
 */
public function asArray(){
    $properties = [];
    foreach ($this as $name => $value){
        $properties[$name] = $value;
    }
    return $properties;
}
/**
 * in object2
 * @param $array
 */
public function fromArray($array){
    foreach ($array as $name => $value){
        if(!isset($this->$name) || $name == 'id'){
            continue;
        }
        $this->$name = $value;
    }
}

然后你可以做这样的事情:

$object2->fromArray($object1->asArray());
$entityManager->flush();

相关内容

  • 没有找到相关文章

最新更新