我们正在将我们的软件从我们自己的遗留PHP框架迁移到Symfony。 我们的应用程序对每个用户都有不同的架构。因此,除了公共模式外,我们还有大约2.000个用户模式。 假设我们有一个类似于市场的系统,并且每个用户都可以在自己的Schema中自定义一些表,但是我们不要专注于此。
我们目前正在寻找针对以下两个问题的最佳解决方案:
当前,在我们的旧系统中,我们使用一堆PHP逻辑来进行此类迁移,并且我想避免自定义DoctrineMigrationsBundle或在一次迁移中包含数百行PHP代码。
所以我想知道有没有更简单的方法来处理Doctrine / Symfony中的所有用户模式,所以当我运行例如:
php bin/console doctrine:migrations:migrate
我们所有现有的用户架构都已更新。
我们的用户模式名称类似于app234234
,app453453
,除了那些模式之外,我们只有默认的public
模式
我们正在使用:
答案 0 :(得分:1)
1-对于您拥有的每个架构,都可以定义一个架构过滤器。假设您为用户表添加模式名称 app234234 _ 。为了防止迁移删除其他表,可以在config.yml / doctrine.yml或定义新用户架构的任何地方使用doctrine dbal schema_filter 属性
## doctrine.yml
doctrine:
dbal:
connections:
app234234:
schema_filter: "/^app234234_/" ## more likely a %schema_name% parameter
根据symfony doc :这将忽略DBAL级别的表,并且它们将被diff命令忽略。
请注意,如果您配置了多个连接,则需要按连接放置schema_filter配置
2-关于第二点,我不知道这是否可以用symfony处理。