我使用Symfony 2.8。
我有一个很大的桌子,有很多datsa,我不再需要了。我想用symfony命令在另一个数据库中移动数据。
我有2个实体经理:
em_archive = mydb_archive
em_default = mydb
我有代码:
$emDefault = $this->getContainer()->get('doctrine')->getManager('em_default');
$emArchive = $this->getContainer()->get('doctrine')->getManager('em_archive');
$repoArchive = $emDefault->getRepository('MyBundle\Datas', 'em_archive');
$repoDefault = $emDefault->getRepository('MyBundle\Datas', 'em_default');
$dataTest = $repoDefault->getOneDataTest();
$dataTest->setOldId($dataTest->getId());
$dataTest->setId(null);
$emArchive->persist($dataTest);
$emArchive->flush();
使用代码我有错误“通知:未定义索引:000000004618b9830000000172fdd8f3”
我的某个实体链接是否存在问题(onetomany,manytoone)?
答案 0 :(得分:2)
实体按类类型映射到实体管理器,因此您不能将相同的类映射到两个实体管理器。这是设计的,您可以从代理类中看到,代理类包含对UnitOfWork
和/或拥有EntityManager
的引用。
此外,load-hydrate-persist-dehydrate-flush的性能非常差,你会遇到很多内存泄漏问题,等等。
因此,您无法使用ORM图层,但您仍然可以使用Doctrine DBAL。
请参阅DBAL insert以获取"映射"的示例语法,或使用良好的老式查询。