【问题标题】:Symfony 2.8 - Doctrine schema force only selected entitiesSymfony 2.8 - Doctrine 模式仅强制选定实体
【发布时间】:2018-03-20 23:24:42
【问题描述】:

我目前有两个数据库(一个 MySQL 和 SQLite 数据库)。我仅将 SQLite 数据库用于需要与主(MySQL)数据库分开的两个日志实体。是否有可能仅使用这两个实体更新 SQLite 数据库而保持 MySQL 数据库不变?我找不到任何命令。

但是,我发现了以下选项:

  1. 在 SQLite 和 MySQL 数据库上使用理论模式更新强制。这个解决方案的缺点是我用其余的模式污染了 SQLite,用两个日志实体污染了 MySQL 数据库。
  2. 将两个日志实体放入一个单独的包中,这样我就可以只对特定包调用架构更新。

尽管这些解决方案解决了问题,但它们并不是真正的最佳解决方案。 是否有可能只为某个实体管理器更新某些实体?

【问题讨论】:

  • php app/console doctrine:schema:update --help => --em[=EM] The entity manager to use for this command 怎么样? This answer 也可能有用。
  • 实体管理器用于与某个数据库建立连接,对吧?我只想更新实体管理器中的特定实体。
  • 查看编辑后的链接,基本上 - 您可以在 config.yml 中配置哪个实体使用哪个管理器。
  • 我不明白这如何解决我的问题。在 Symfony (symfony.com/doc/current/reference/configuration/…) 的文档中,我似乎可以更改特定连接的 Doctrine 配置文件和实体文件夹,而不是每个实体的连接。

标签: symfony doctrine-orm


【解决方案1】:

我们可以在你的配置中声明两个 entitymanager 之后这样做

orm:
    default_entity_manager: <your_mysql_em>
    entity_managers:
        mysql_em:
            connection: <mysql_connection_name>
            mappings:
                AppBundle:
                    type: 'annotation'
                    dir: 'Entity/'
         logger_em:
            connection: <sqlite_connection_name>
            mappings:
               AppBundle:
                    type: 'annotation'
                    dir: 'Logger/Entity'

在你可以选择一个 em 来更新你的架构之后:

app/console doctrine:schema:update --em logger_em

参见文档https://symfony.com/doc/current/doctrine/multiple_entity_managers.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多