Symfony 2:如何避免会话表被学说迁移删除?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 2:如何避免会话表被学说迁移删除?相关的知识,希望对你有一定的参考价值。

我是迁移的新手,我正在努力坚持自动生成的迁移:

$ php app/console doctrine:migrations:diff
$ php app/console doctrine:migrations:migrate

问题是这会丢弃我的会话表。我该怎么做才能避免这种情况?

答案

我知道我迟到了这个问题,但我想我会提出一个建议。

将会话表导入您的实体。即使你不通过它创建的接口使用它,它也会允许Doctrine跟踪表格,这样它就知道它们是存在的。

见:http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

另一答案

另一种选择只是告诉Doctrine忽略该表。您可以使用schema_filter中描述的this SO post选项。

因此,如果您的表名为sessions,请将以下内容添加到config.yml(Symfony <4)或doctrine.yaml(Symfony> = 4):

doctrine:
    dbal:
      # standard database config here
      schema_filter: ~^(?!sessions)~

我们有大量的表要忽略,所以我们采取了相反的方法 - 我们告诉Doctrine只考虑以某个前缀开头的表,并设置监听器以确保我们所有的Doctrine管理的表都有一个前缀。 http://docs.doctrine-project.org/en/latest/cookbook/sql-table-prefixes.html记录了对表前缀的监听器的使用,并且有关于它的Symfony方面的SO帖子here

另一答案

当你说“会话表”时,我猜你的意思是PdoSessionStorage的会话表? (只是为了确保我们谈论同样的事情:-))

我有一个类似的问题,唯一的持久(和非复杂)解决方案只是将您的会话放在另一个数据库中(并相应地更新配置)。但这需要创建额外数据库的权限。

如果你没有这种可能性,我会看一些其他的解决方案,但也许上面提到的一个适合你:-)

以上是关于Symfony 2:如何避免会话表被学说迁移删除?的主要内容,如果未能解决你的问题,请参考以下文章

实体的 Symfony 学说问题 [重复]

如何防止不需要的学说在symfony 4中持续存在?

如何在 Symfony2,学说 2 中使用 @SqlResultSetMapping?

如何让 Symfony 2 与学说 ORM 只保留一次相关实体

Symfony2 学说清除缓存

Django 中的模型表被删除