如何从环境变量加载Doctrine表定义

时间:2018-02-22 11:28:00

标签: php laravel doctrine-orm

我有一个使用Doctrine的项目。我想在多个客户的服务器上运行相同的代码。唯一的问题是,有些表有不同的名称。不幸的是,不仅前缀不同。例如,用户表在一个数据库中为a_user,在另一个数据库中为user_table,但我想使用的列是相同的。

是否可以从环境变量中读取实体表名称?我不知道如何解决这个问题,因为它必须在注释中定义,如下所示:

/**
 * @ORM\Entity
 * @ORM\Table(name="tablename")
 */

如果我在每个客户代码中手动更改注释中的表名,那么它可以正常工作。但我想避免这个

1 个答案:

答案 0 :(得分:1)

您的EntityManager应该采用getClassMetadata方法(因为它实现了ObjectManager接口)。此方法将返回ClassMetadata实例,该实例允许您访问类的配置,包括带有getTableName的基础表名:

$entityManager->getClassMetadata('App\Models\YourEntity')->getTableName();