我在使用Doctrine在Symfony3中运行功能测试时遇到了麻烦。 我有两个捆绑组织的代码,需要由一个EntityManager访问存储在两个不同MySQL数据库中的实体。 要做到这一点,所有的实体有一个“模式”标注在他们的定义是这样的:Symfony/Doctrine:Entity“schema”注释与环境无关?
/**
* @ORM/Table(name="tablename", schema="schema")
* @Entity(...)
*/
如果没有这个设置,它一直是我的经验,教条模式:创建工具无法正确地创建在正确的数据库中的实体。 但是看起来,模式注释不被认为是依赖于环境的。
因此,当我想运行需要加载灯具的功能测试时,ORMPurger会尝试清除schema.tablename,它应该使用表/模式“test_schema”。
是否有任何方法来保留模式注释但使其依赖于环境,以便在环境“测试”时使用不同的模式?
编辑:
看来,用“模式”的注释是实体非常可怕各地,当您使用不同的Symfony环境。至少在与MySQl结合使用时,至少我认为这是原因,因为MySQL实际上并不支持模式。 每一个Symfony或Doctrine命令我试图从字面上理解模式注释,而不管--env设置如何。