主要目的是在一个数据库上使用多个项目实例,这些实例可以访问自己的模式(instance1,instance2等...) 以及一般信息的全局模式(用户,用户组,用户团队)。全局模式通过注释设置
@ORM\Table(name="global.user")
实例架构表具有全局架构表的外键。
我创建了一个更改实体元数据的内核事件监听器:
$this->em = $this->container->get('doctrine.orm.entity_manager');
$metadataFactory = $this->em->getMetadataFactory();
$allEntitiesMetadata = $metadataFactory->getAllMetadata();
foreach ($allEntitiesMetadata as $entityMetadata) {
$entityMetadata = $metadataFactory->getMetadataFor($entityMetadata->getName());
// global entities has global schema defined here
if (!array_key_exists('schema', $entityMetadata->table)) {
$entityMetadata->table['schema'] = 'instance1';
}
}
也许有一种更简单的方法来为symfony项目定义默认架构?