学说倍数实体管理器数据表创建

时间:2019-06-03 12:30:22

标签: symfony doctrine-orm entity entitymanager

我在项目中设置了2个EntityManager(默认为em2)。似乎没有错误弹出,但是尽管我指定了一个文件夹来拆分与每个EntityManager相关的实体,但 Doctrine仍在默认数据库中创建与em2相关的表(当前使用{{1} }的开发时间)。我想念什么?我还尝试使用doctrine:schema:update选项来创建命令,但是它始终具有相同的有害行为。

--em

编辑:我试图从doctrine: dbal: default_connection: default connections: default: # configure these for your database server driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci url: '%env(resolve:DATABASE_URL)%' em2: # configure these for your database server driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci schema_filter: ~^(?!m_sqlviewstate)~ url: '%env(resolve:DATABASE_EM2_URL)%' orm: default_entity_manager: default entity_managers: default: connection: default # auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: false mappings: App: is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App em2: connection: em2 naming_strategy: doctrine.orm.naming_strategy.underscore mappings: Em2: is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity/Em2' prefix: 'App\Entity\Em2' alias: Em2 文件夹移走em2实体。这似乎在表生成方面起作用,即我不再在默认数据库中使用em2实体生成表。

但是,我现在收到有关捆绑实体的错误。

  

在链配置的命名空间Lch \ MenuBundle \ Entity中找不到类'App \ Entity \ Shop \ User'

AFAIK,这似乎来自以下事实:我需要在默认的Entity 上手动注册每个捆绑软件目录/名称空间。 我不明白为什么,因为默认标记为EntityManager

auto_mapping的修改部分之下:

orm

1 个答案:

答案 0 :(得分:0)

默认情况下,Symfony中的Doctrine会加载它可以在默认位置(例如src/Entity)中捕获的所有映射。您需要关闭此功能。

doctrine:
    orm:
        auto_mapping: false
  

Doctrine的自动映射功能从每个捆绑软件的Entity /目录加载注释配置,并在Resources / config / doctrine目录中查找其他格式(例如YAML,XML)。

https://symfony.com/doc/master/reference/configuration/doctrine.html#custom-mapping-entities-in-a-bundle

您的Entity/Em2也是Entity的子文件夹,这意味着第一个EntityManager将加载所有子文件夹中的所有实体。将其移动到单独的路径。

doctrine:
    orm:
        em2:
            mappings:
                Em2:
                    dir: '%kernel.project_dir%/src/EntityEm2'