Symfony,将数据从em1移动到em2

时间:2016-06-30 10:34:43

标签: symfony doctrine-orm

我使用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)?

1 个答案:

答案 0 :(得分:2)

实体按类类型映射到实体管理器,因此您不能将相同的类映射到两个实体管理器。这是设计的,您可以从代理类中看到,代理类包含对UnitOfWork和/或拥有EntityManager的引用。

此外,load-hydrate-persist-dehydrate-flush的性能非常差,你会遇到很多内存泄漏问题,等等。

因此,您无法使用ORM图层,但您仍然可以使用Doctrine DBAL。

请参阅DBAL insert以获取"映射"的示例语法,或使用良好的老式查询。