Symfony Doctrine从多个数据库生成实体

时间:2013-05-06 03:26:56

标签: symfony doctrine multiple-databases

使用Symfony2中的Doctrine,有一种简单的方法可以使用从现有数据库模式创建的反向工程实体来启动项目。记录完整here。没有提到如何在使用多个数据库时对来自非默认数据库的数据进行逆向工程(记录为here)。

我找到了解决方案here,它的工作原理如下:

php app/console doctrine:mapping:convert --em="troller" --from-database yml ./src/NAMESPACE/NAMEBundle/Resources/config/doctrine/metadata/orm

但是,我只是得到异常,好像第二个实体管理器不存在一样。即使我根据文档有config.yml。

[InvalidArgumentException]                            
Doctrine ORM Manager named "troller" does not exist.

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您是否使用“控制器”名称指定了entity manager

您可以使用这样的代码片段(进入app/config/config.yml文件)

来执行此操作
orm:
  default_entity_manager:   default
  entity_managers:
    default:
      connection:       default
      mappings:
        AcmeDemoBundle: ~
        AcmeStoreBundle: ~
    troller:
      connection:       troller
      mappings:
        YourTrollerBundle: ~

在此示例中,您已定义了两个名为defaulttroller的实体管理器。默认实体管理器管理AcmeDemoBundleAcmeStoreBundle中的实体,而troller实体管理器管理YourTrollerBundle中的实体。 您还定义了两个连接,每个实体管理器一个连接。

明确地定义一个新的连接和实体管理器,不是enaugh:你还必须指定“连接参数”(比如db name,user,password,driver等)

troller:
  driver:   "%database_driver2%"
  host:     "%database_host2%"
  port:     "%database_port2%"
  dbname:   "%database_name2%"
  user:     "%database_user2%"
  password: "%database_password2%"
  charset:  UTF8