How do I change symfony 2 doctrine mapper to use m

2020-03-01 18:54发布

I use doctrine in my symfony 2.3 application. I want to use a folder structure like

/MyBundleName/User/User.php

for my Entities.

Question:

Is there anyway that I can explicitly map doctrine ORM directly to use an explicit directory instead of defaulting to the Entity Directory of my Bundle?

I would like to keep all related files in their respective directory such as ProductProvider in

/MyBundleName/Product/ProductProvider.php

Any help would be greatly appreciated.

3条回答
迷人小祖宗
2楼-- · 2020-03-01 19:13

you can tell Doctrine the directory where is your entities

doctrine:
orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: false
    mappings:
        name:
            type: php
            dir: %kernel.root_dir%/../src/Company/CartoDBBundle/Tests/CartoDB/Entity

Here you have the full documentation Doctrine configuration

I made a similar question a few days ago, there you can read the full answer Cedar gave me
Similar post

查看更多
Anthone
3楼-- · 2020-03-01 19:18

Just to follow up a bit on @Imanol's correct answer, it is possible to have your entities in multiple directories under one entity manager:

doctrine:
  orm:
    default_entity_manager:       default
    auto_generate_proxy_classes: %kernel.debug%

    entity_managers:

        default:
            connection: default
            mappings:

        test01:
            connection: test01
            mappings:
              product:
                type:      yml
                dir:       %kernel.root_dir%/../src/Cerad/Bundle/Test01Bundle/Product
                prefix:    Cerad\Bundle\Test01Bundle\Product
                alias:     Product
                is_bundle: false
              user:
                type:      yml
                dir:       %kernel.root_dir%/../src/Cerad/Bundle/Test01Bundle/User
                prefix:    Cerad\Bundle\Test01Bundle\User
                alias:     User
                is_bundle: false

Don't worry about the is_bundle: false entries. The entities can still live in a bundle. Doctrine does not care. And in case you are wondering, the alias parameter lets you do things like:

$repo = $em->getRepository("Product:Product");
查看更多
男人必须洒脱
4楼-- · 2020-03-01 19:19

I've spent some time trying to figure out the simplest case. This is how I made it work:

doctrine:
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        auto_mapping: true
        mappings:
            AppBundle:
                mapping: true
                type: annotation
                dir: Model
                alias: AppBundle
                prefix: 'AppBundle\Model'
                is_bundle: true

I simply wanted to store my entities in a directory called 'Model' inside my bundle, instead of the default 'Entity'.

查看更多
登录 后发表回答