Сохранять сущность со связями в другом EntityManager - PullRequest
1 голос
/ 12 марта 2012

У меня есть несколько EntityManager, объявленных так:

doctrine:
dbal:
    default_connection:       default
    connections:
        default:
            driver:   %db_default_driver%
            host:     %db_default_host%
            port:     %db_default_port%
            dbname:   %db_default_name%
            user:     %db_default_user%
            password: %db_default_password%
            charset:  UTF8
        sync:
            driver:   %db_solarsync_driver%
            host:     %db_solarsync_host%
            port:     %db_solarsync_port%
            dbname:   %db_solarsync_name%
            user:     %db_solarsync_user%
            password: %db_solarsync_password%
            charset:  UTF8
        master:
            driver:   %db_master_driver%
            host:     %db_master_host%
            port:     %db_master_port%
            dbname:   %db_master_name%
            user:     %db_master_user%
            password: %db_master_password%
            charset:  UTF8

orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager:   default
    entity_managers:
        default:
            connection:       default
            mappings:
                FOSUserBundle: ~
                SolarWebUserBundle: ~
                SolarWebSolarSalesBundle: ~
                SolarWebSolarAdminBundle: ~
        sync:
            connection:       sync
            mappings:
                FOSUserBundle: ~
                SolarWebUserBundle: ~
                SolarWebSolarSalesBundle: ~
                SolarWebSolarAdminBundle: ~
                SolarWebSolarSyncBundle: ~
        master:
            connection:       master
            mappings:
                FOSUserBundle: ~
                SolarWebUserBundle: ~
                SolarWebSolarSalesBundle: ~
                SolarWebSolarAdminBundle: ~

Каждое соединение представляет одну базу данных.

И объект "Devis".Существует два отношения OneToOne с DevisDonnesTranches и DevisOptions.Так объявлено в Devis.php

    /**
 * @ORM\OneToOne(targetEntity="SolarWeb\SolarSalesBundle\Entity\DevisDonneesTranches")
 * @ORM\JoinColumn(name="donnees_tranches_id", referencedColumnName="id", onDelete="CASCADE")
 */
protected $donnees_tranches;

/**
 * @ORM\OneToOne(targetEntity="SolarWeb\SolarSalesBundle\Entity\DevisOptions")
 * @ORM\JoinColumn(name="options_id", referencedColumnName="id", onDelete="CASCADE")
 */
protected $options;

. Для целей репликации мне нужно извлечь Devis и его отношения из «sync» и сохранить их в «master».Но когда я это делаю, я получаю

Notice: Undefined index: 000000005846b3b000000000cfe7c32f in /srv/http/vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php line 2219 

Я думаю, что это из-за отношений OneToOne.Потому что когда я $ devis-> setDevisOptions (null) и $ devis-> setDevisDonneesTranches (null), Devis сохраняется в 'master'.Но без отношениясохранить сущность от менеджера сущностей к другому.Есть ли какой-нибудь совет или даже хорошая практика для этого?

Спасибо.

...