Как использовать XML-сопоставление для одной сущности и сохранить остальные сущности, сопоставленные аннотациями? - PullRequest
1 голос
/ 08 октября 2019

Я добавляю новую функциональность ( hackzilla / Ticket-bundle ) в старое приложение на основе Symfony 2.8, и мне нужно расширить базовые объекты этого пакета, чтобы иметь возможность добавлять некоторые настраиваемые поля.

В приложении все сущности используют аннотации для сопоставления, но для расширения сущностей из Ticket-bundle мне, скорее всего, нужно использовать сопоставление XML, основанное на этом doc .

Есть ли способ использовать сопоставление XML для одного / нескольких объектов, но не для всех?

Это моя текущая конфигурация доктрины.

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        dql:
           datetime_functions:
               month: DoctrineExtensions\Query\Mysql\Month
               monthname: DoctrineExtensions\Query\Mysql\MonthName
               ifnull: DoctrineExtensions\Query\Mysql\IfNull

1 Ответ

0 голосов
/ 08 октября 2019

Да, вам нужно отключить doctrine.orm.auto_mapping и вместо этого сопоставлять объекты вручную. Это может выглядеть примерно так: (Вы можете опустить некоторые из этих опций, посмотрите связанную документацию для более короткого примера использования пакетов):

doctrine:
    orm:
        mappings:
            App:
                is_bundle: true
                type: annotation
                dir: '%kernel.project_dir%/src/AppBundle/Entity'
                prefix: 'AppBundle\Entity'
                alias: App
            Ticket:
                is_bundle: true
                type: xml
                dir: '%kernel.project_dir%/src/TicketBundle/Entity'
                prefix: 'TicketBundle\Entity'
                alias: Ticket

См. Также: https://symfony.com/doc/current/reference/configuration/doctrine.html#mapping-configuration

...