我有一个关于 Symfony2 中 Doctrine 的 YAML 配置的问题。
我通过“doctrine:generate:entity”创建了一个实体,并选择 YAML 作为映射格式。
这不会在 ../Entity/"MyEntity".php 上添加任何元数据,这将允许我更新或创建我的架构。
举个例子,如果我运行
./app/console doctrine:schema:create
它失败了,说:
[RuntimeException]
Bundle "MySuperBundle" does not contain any mapped entities.
我的自动映射已设置为“true”。
如果我选择使用注释配置,这不会成为问题。
我错过了什么?我还应该采取任何额外的步骤吗?
预先感谢您,问候,
Ivan
我刚刚在查看 Doctrine 配置初始化代码时度过了一段有趣的时光。我发现的是:
- 使用 auto_mapping 会导致为单个默认实体管理器设置各种默认值;它留下了
type
值为 false
- If
type
为 false 时,配置代码会在默认目录中查找可能的配置文件,一旦找到有效扩展名的文件,它就会按照顺序决定这就是配置的方式xml
, yml
, php
- 如果它没有找到它所假设的任何一个
annotation
你还有什么其他的吗?Bundle/Resources/config/doctrine
文件夹?如果是这样,它可能会阻止自动检测。
除此之外,基本上如果您使用了默认值,并且有一些实体类和有效的配置,那么您正在做的事情应该无需任何额外的配置即可工作。您说过“auto_mapping”是正确的,但是您是否更改了 Doctrine 配置的其他部分?
尝试显式配置东西可能是一个想法,例如如中所述Symfony Doctrine 文档, 从默认配置开始
doctrine:
dbal:
driver: "%database_driver%"
#etc
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
明确地
doctrine:
dbal:
driver: "%database_driver%"
#etc
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: false
mappings:
MySuperBundleName:
type: yml
dir: Resources/config/doctrine
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)