【发布时间】:2017-03-01 13:34:57
【问题描述】:
我无法使用 Doctrine 在 Symfony3 中运行功能测试。 我将代码组织在两个包中,一个实体管理器需要访问这些包,实体存储在两个不同的 MySQL 数据库中。 为了实现这一点,所有实体在其定义中都有一个“模式”注释,如下所示:
/**
* @ORM/Table(name="tablename", schema="schema")
* @Entity( ... )
*/
如果没有此设置,根据我的经验,Doctrine schema:create 工具无法在正确的数据库中正确创建实体。 但是看起来,模式注释不被认为是环境相关的。
所以当我想运行需要加载夹具的功能测试时,ORMPurger 会尝试清除 schema.tablename,它应该使用表/模式“test_schema”。
有什么办法可以保留schema注解,但是让它依赖于环境,这样当环境为“test”时,使用不同的schema?
编辑:
当您使用不同的 Symfony 环境时,似乎对实体使用“模式”注释非常糟糕。至少在与 MySQl 一起使用时,至少我认为这就是原因,因为 MySQL 实际上并不支持模式。 无论 --env 设置如何,我都尝试从字面上理解模式注释的每个 Symfony 或 Doctrine 命令。
【问题讨论】:
标签: annotations doctrine symfony functional-testing