有没有办法告诉教义不要碰特定的桌子?

Hub*_*NNN 4 doctrine symfony doctrine-orm

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

$this->addSql('DROP TABLE messenger_messages');
$this->addSql('DROP TABLE monitoring');
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉doctrine特定的桌子不属于他,这样doctrine就不会每次都尝试删除它们?

Dia*_*thy 5

您可以在文档中找到答案:https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html#manual-tables

简短回答:向您的自定义表添加前缀,然后配置此前缀(例如,如果您的自定义表以“t_”开头):

doctrine:
    dbal:
        schema_filter: ~^(?!t_)~
Run Code Online (Sandbox Code Playgroud)


Hub*_*NNN 5

您可以使用正则表达式从学说视野中排除表。要指定原则不应触及的表列表,只需将其添加到配置中:

doctrine:
  dbal:
    schema_filter: ~^(?!(messenger_messages|monitoring|foo|bar)$)~
Run Code Online (Sandbox Code Playgroud)

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

  • 信使消息
  • 监控
  • 酒吧

感谢@Diabetic Nephropathy 暗示了正则表达式的方法。