Как я могу изменить доктрину 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
Я просто хотел сохранить свои сущности в каталоге под названием "Модель" внутри моего пакета вместо стандартного "Сущность".