【问题标题】:Doctrine update entity from another entity从另一个实体更新实体
【发布时间】:2017-01-08 19:32:32
【问题描述】:

我有两个相同类型的学说实体,我希望将一个实体的内容替换为另一个实体的内容,除了我想要保留的 ID。

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

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

例如将 $object1 的内容复制到 $object2,同时保留 $object2 的 id(两者都已由学说管理)我这样做:

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

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

谢谢。

【问题讨论】:

    标签: php symfony doctrine-orm doctrine


    【解决方案1】:

    我会像这样在对象中实现 setter 和 getter:

    /**
     * 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多