我在项目中设置了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
答案 0 :(得分:0)
默认情况下,Symfony中的Doctrine会加载它可以在默认位置(例如src/Entity
)中捕获的所有映射。您需要关闭此功能。
doctrine:
orm:
auto_mapping: false
Doctrine的自动映射功能从每个捆绑软件的Entity /目录加载注释配置,并在Resources / config / doctrine目录中查找其他格式(例如YAML,XML)。
您的Entity/Em2
也是Entity
的子文件夹,这意味着第一个EntityManager
将加载所有子文件夹中的所有实体。将其移动到单独的路径。
doctrine:
orm:
em2:
mappings:
Em2:
dir: '%kernel.project_dir%/src/EntityEm2'