dpvmjk0479 2011-11-17 11:56
浏览 70
已采纳

Doctrine2 + Symfony2:如何将实体和映射存储在单独的包中?

I want to decouple my application so I can use my entities anywhere whatever their datasource might be.

So I've put my entities in

DataAccessLayerBundle\Entity

and mappings in

DataProvider\DataBaseBundle\Resources\config\doctrine

Issue:

When I try the following command:

php app\console doctrine:schema:create

to build my database, I get the following error:

Warning: class_parents(): Class (..)\DataProvider\DatabaseBundle\Entity\BaseEntity does not exist and could not be loaded in (...)\vendor\doctrine\lib\D octrine\ORM\Mapping\ClassMetadataFactory.php line 223

The question is: why the hell is it trying to look for classes in the DataProvider\DatabaseBundle\Entity namespace, when I explicitly defined it otherwise in the mapping files? Example fragment of mapping file:

<mapped-superclass name="(...)\DataAccessLayerBundle\Entity\Base\BaseEntity">

I've noticed symfony/doctrine is just looking up those classes based off xml filenames (e.g. BaseEntity.orm.xml) and current bundle namespace.

Is there any way I can decouple things like I wanted, or am I stuck with defining entities and their mapping in the same bundle?

  • 写回答

1条回答 默认 最新

  • douju1365 2011-11-23 11:32
    关注

    As it turned out from the docs, it is possible to have entities and mappings in separate bundles. To do so, you have to configure doctrine in the main config as in following example:

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        ...
        entity_managers:
          default:
            mappings:
              (...)DataAccessLayerBundle:
                type: xml
                dir: ../DataProvider/DatabaseBundle/Resources/config/doctrine
    

    I still had to move my BaseEntity class from Entity\Base to Entity folder for this to work, but this is a little sacrifice compared to the flexibility gained.

    Config reference: http://symfony.com/doc/2.0/reference/configuration/doctrine.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源