【问题标题】:Doctrine Schema Create for just one BundleDoctrine Schema 只为一个 Bundle 创建
【发布时间】:2012-01-31 18:41:03
【问题描述】:

我如何告诉 Symfony 只为一个 Bundle 生成表?

每次我创建一个包并运行:

php app/console doctrine:schema:create

它在我当前的数据库(特定包的)上创建来自我所有包的所有表。我不需要那个。

【问题讨论】:

  • app/console dictionary:schema:update --em my_own_entity_manager_name 使用这个命令,对我不起作用,它仍然从所有包创建实体。

标签: mysql symfony doctrine-orm bundle


【解决方案1】:

当你创建一个新包时,只需使用

app/console doctrine:schema:update

因为您的架构已经存在。

【讨论】:

    【解决方案2】:

    有时使用php app/console doctrine:schema:update --force 并不能解决问题,因此您可以简单地在$bundles 中注释AppKernel.php 中的其他包,然后再次使用php app/console doctrine:schema:update --force,它应该可以工作。

    不要忘记取消注释捆绑包。

    【讨论】:

      【解决方案3】:

      如果您的捆绑包被映射到不同的实体管理器,您可以(或必须)为架构更新命令使用参数“--em entity_manager_name”。

      例子:

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

      【讨论】:

        【解决方案4】:

        假设您有一个使用 MySQL 数据库的 Bundle,该数据库位于 src 目录的文件夹中,例如:

        src/Folder/BundleFolder/
        

        还有另一个使用 src 目录中的 Postgresql 数据库的 Bundle,比方说:

        src/OtherBundle
        

        要将原则映射到某个实体管理器,请在您的 app/config/config.yml 文件中使用此配置:

        orm:
            #auto_mapping: true 
            #default_entity_manager: default
            entity_managers:
                default:
                    connection: mysql
                    mappings:
                        FolderBundleFolder : ~
                other:
                    connection: pgsql
                    mappings:
                        OtherBundle : ~
        

        然后如user3580495所说,使用命令:

        php app/console doctrine:schema:create --em=other --dump-sql
        

        看看 postgresql 数据库会发生什么。

        php app/console doctrine:schema:update --em=default --dump-sql
        

        将显示将在 MySQL 数据库上执行的 SQL 命令。

        在conf文件文件中,不要忘记这样的注释:

        #auto_mapping: true 
        #default_entity_manager: default
        

        这也意味着,当您使用该条令更新命令时,您每次都必须精确地确定您的实体管理器,这样您就可以更好地控制您在整体上所做的事情。

        不要忘记 --help 参数始终是 symfony 命令的朋友,而且你会在文档中找到很多信息:

        http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

        【讨论】:

          猜你喜欢
          • 2016-04-13
          • 1970-01-01
          • 2014-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-26
          • 2016-07-24
          相关资源
          最近更新 更多