我正在开发一个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);
}
}