我尝试将Symfony 2.5中的Doctrine与XML配置一起用于实体映射。
我有一个命名空间的类Bar
:ACME\TestBundle\Entity\Foo\Bar
由于我有许多实体,它们不能全部都驻留在ACME\TestBundle\Entity
命名空间中,但是必须放入子命名空间中。
创建实体没问题,但是我不知道将ORM XML配置文件放在何处。
我尝试了Resources/config/doctrine/Foo/Bar.orm.xml
,但找不到映射文件:
$ php app/console doctrine:schema:create --dump-sql
No Metadata Classes to process.
我想Resources/config/doctrine/Bar.orm.xml
,这忽略了额外的Foo
命名空间的Unter Entity
,虽然完整的命名空间中给出正确Bar.orm.xml
的name
元素。
$ php app/console doctrine:schema:create --dump-sql
[Doctrine\Common\Persistence\Mapping\MappingException]
Class 'ACME\TestBundle\Entity\Bar' does not exist
我想念什么?XML映射文件在这些命名空间类中驻留的正确位置是什么?
在此先感谢您的帮助。
使用@ user3749178的Foo.Bar.orm.xml的建议是可行的,并且是解决问题的最简单方法,尽管所有映射文件最终都位于一个目录中。
还可以基于以下内容为所有内容提供单独的目录:
http://symfony.com/doc/current/reference/configuration/doctrine.html#mapping-configuration
这是一个示例配置:
doctrine:
orm:
default_entity_manager: default
auto_generate_proxy_classes: %kernel.debug%
entity_managers:
default:
connection: default
mappings:
foo1:
prefix: Cerad\Bundle\ProjectGameBundle\Doctrine\Entity\Foo1
type: yml
dir: src/ProjectGameBundle/Doctrine/EntityMapping/Foo1
is_bundle: false
foo2:
prefix: Cerad\Bundle\ProjectGameBundle\Doctrine\Entity\Foo2
type: yml
dir: src/ProjectGameBundle/Doctrine/EntityMapping/Foo2
is_bundle: false
基本上,您为每个包含实体的目录指定一个映射。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句