Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

用户名

我尝试将Symfony 2.5中的Doctrine与XML配置一起用于实体映射。

我有一个命名空间的类BarACME\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.xmlname元素。

$ 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章