Symfony使用FosUser将实体从一个实体管理器克隆到另一个实体管理器
我想将数据从一个数据库复制到另一个数据库。我从两个不同的实体经理(emLocal、emRemote)那里获得了两个客户 客户实体与FosUser之间存在一对一关系 刷新尝试插入空白用户。即使我尝试分离相关实体并将每个关系设置为空 我从中了解到FosUserBundle不是设计用于两个实体管理器的Symfony使用FosUser将实体从一个实体管理器克隆到另一个实体管理器,symfony,doctrine,fosuserbundle,Symfony,Doctrine,Fosuserbundle,我想将数据从一个数据库复制到另一个数据库。我从两个不同的实体经理(emLocal、emRemote)那里获得了两个客户 客户实体与FosUser之间存在一对一关系 刷新尝试插入空白用户。即使我尝试分离相关实体并将每个关系设置为空 我从中了解到FosUserBundle不是设计用于两个实体管理器的 $remoteCustomer = $order->getCustomer(); $onlineCustomer = $this->emLocal->g
$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();
请谨慎使用原则中的克隆实体,特别是当您希望在一个请求中重用它们时,标准
克隆
通常不会创建深度副本,某些初始值设定项可能不符合预期等。