symfony 有没有办法告诉教义不要触及特定的table?

s4n0splo  于 2023-05-18  发布在  其他
关注(0)|答案(3)|浏览(107)

每次我运行doctrine:migrations:diff为我的更改生成迁移,它总是包括删除一些不被规则处理的表,例如:

$this->addSql('DROP TABLE messenger_messages');
$this->addSql('DROP TABLE monitoring');

有没有一种方法可以告诉教义,特定的table不属于他,这样教义就不会每次都试图丢弃它们?

fivyi3re

fivyi3re1#

你可以在文档中找到答案:https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html#manual-tables
简短回答:将前缀添加到自定义表中,然后配置此前缀(例如,如果自定义表以't_'开头):

doctrine:
    dbal:
        schema_filter: ~^(?!t_)~
jhiyze9q

jhiyze9q2#

可以使用正则表达式将表排除在学说视野之外。要指定一个不应该被教条触及的表列表,只需在config中添加以下内容:

doctrine:
  dbal:
    schema_filter: ~^(?!(messenger_messages|monitoring|foo|bar)$)~

这将防止教义操纵这四个表:

  • 信使信息
  • 监测

感谢@糖尿病肾病提示与regex的方式。

brtdzjyr

brtdzjyr3#

当有多个连接时,需要为每个连接设置:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                url: '%env(resolve:DATABASE_URL)%'
                schema_filter: '~^(?!messenger_messages)~'

相关问题