我有几个EntityManagers声明如下:
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”实体。与DevisDonnesTranches和DevisOptions有2个OneToOne关系。 在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;
出于复制目的,我必须从'sync'获取Devis及其关系,并将它们保存在'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'中。但没有任何关系。
所以我试图在'master'中坚持DevisOptions和DevisDonneesTranches,我得到了一个
Class Proxies\SolarWebSolarSalesBundleEntityDevisOptionsProxy is not a valid entity or mapped super class.
所以,我想在尝试将实体从实体管理器持久化到另一个实体管理器时,我错过了关于EntityManagers的一些观点。 这样做有什么建议甚至是好的做法吗?
谢谢。