使用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.
有什么想法吗?
答案 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: ~
在此示例中,您已定义了两个名为default
和troller
的实体管理器。默认实体管理器管理AcmeDemoBundle
和AcmeStoreBundle
中的实体,而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