对同一数据库中的2个或多个表使用一个实体symfony类


Use one entity symfony class for 2 or many tables in the same database

我正在开发一个web应用程序,用户可以在其中切换他想要记录数据的表。我的意思是,在同一个表中可能有一个测试模式的表和另一个prod模式的表。例如,我在两种模式下都有一个tab_article,但其中的列是相同的,所以我想为它们只使用一个实体类,但这取决于用户的选择,说数据将在表中用于prod或测试。

我还计划允许管理员创建其他模式,因此我将为他创建的任何模式动态生成所有表。

我想听听你的建议。

感谢您的回答

解决这个问题的更简单的方法是处理loadClassMetadata Doctrine事件。

简单的监听器示例:

class TableEnvRenameListener
{
    private $env;
    public function __construct($env)
    {
        $this->env = $env;
    }
    public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
    {
        $classMetadata = $eventArgs->getClassMetadata();
        $table = $classMetadata->table;
        $table['name'] = str_replace('_env', $this->env, $table['name']);
        $classMetadata->setPrimaryTable($table);
    }
}