Symfony使用FosUser将实体从一个实体管理器克隆到另一个实体管理器

Symfony使用FosUser将实体从一个实体管理器克隆到另一个实体管理器,symfony,doctrine,fosuserbundle,Symfony,Doctrine,Fosuserbundle,我想将数据从一个数据库复制到另一个数据库。我从两个不同的实体经理(emLocal、emRemote)那里获得了两个客户 客户实体与FosUser之间存在一对一关系 刷新尝试插入空白用户。即使我尝试分离相关实体并将每个关系设置为空 我从中了解到FosUserBundle不是设计用于两个实体管理器的 $remoteCustomer = $order->getCustomer(); $onlineCustomer = $this->emLocal->g

我想将数据从一个数据库复制到另一个数据库。我从两个不同的实体经理(emLocal、emRemote)那里获得了两个客户

客户实体与FosUser之间存在一对一关系 刷新尝试插入空白用户。即使我尝试分离相关实体并将每个关系设置为空

我从中了解到FosUserBundle不是设计用于两个实体管理器的

        $remoteCustomer = $order->getCustomer();
        $onlineCustomer = $this->emLocal->getRepository("LilWorksStoreBundle:Customer")->findOneBy(array("remoteUser"=>$remoteCustomer->getUser()->getId()));
        if(!$onlineCustomer){
            $onlineCustomer = clone $remoteCustomer;

        }
        $this->emLocal->detach($onlineCustomer->getUser());
        $onlineCustomer->getUser()->setCustomer(null);
        $onlineCustomer->setUser(null);
        $this->emLocal->persist($onlineCustomer);
        $this->emLocal->flush();

如何防止此插入?

我认为您应该使用另一个
实体管理器
来保存
$onlineCustomer

$this->emOnline->persist($onlineCustomer);
$this->emOnline->flush();

请谨慎使用原则中的克隆实体,特别是当您希望在一个请求中重用它们时,标准
克隆
通常不会创建深度副本,某些初始值设定项可能不符合预期等。