Как я могу изменить доктрину Symfony 2, чтобы использовать мой собственный каталог вместо моего Entity Directory в комплекте

Я использую доктрину в своем приложении Symfony 2.3. Я хочу использовать структуру папок, как

/MyBundleName/User/User.php

для моих сущностей.

Вопрос:

Есть ли в любом случае, что я могу явно сопоставить доктрину ORM напрямую, чтобы использовать явный каталог вместо значения по умолчанию для Entity Каталог моего комплекта?

Я хотел бы сохранить все связанные файлы в соответствующих каталогах, таких как ProductProvider в

/MyBundleName/Product/ProductProvider.php

Любая помощь будет принята с благодарностью.

3 ответа

Просто чтобы немного проверить правильность ответа @Imanol, возможно, что ваши сущности находятся в нескольких каталогах под одним менеджером сущностей:

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

Не беспокойтесь о ложных записях is_bundle: Сущности могут все еще жить в связке. Доктрина не волнует. И если вам интересно, параметр alias позволяет вам делать такие вещи, как:

$repo = $em->getRepository("Product:Product");

Вы можете указать Doctrine каталог, где находится ваша сущность

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

Здесь у вас есть полная документация по настройке Doctrine

Я задал похожий вопрос несколько дней назад, там вы можете прочитать полный ответ, который дал мне Кедр
Подобный пост

Я провел некоторое время, пытаясь выяснить самый простой случай. Вот как я заставил это работать:

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

Я просто хотел сохранить свои сущности в каталоге под названием "Модель" внутри моего пакета вместо стандартного "Сущность".

Другие вопросы по тегам