我有2捆在我的Symfony2框架: A「MainBundle」與用戶實體,而「TicketBundle」用我所有的東西的問題跟蹤系統。在這種情況下,只有實體「池」和「映射池用戶」很重要。 他們都使用不同的實體管理器,因爲我必須使用2個不同的數據庫。 (見下面我config.yml)將實體管理器綁定到Symfony2中的實體?
doctrine:
dbal:
default_connection: default
connections:
default:
[driver, host etc.]
dbname: m_symfony
ticket:
[driver, host etc.]
dbname: m_ticketbundle
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
XXXMainBundle: ~
ticket:
connection: ticket
mappings:
XXXTicketBundle: ~
XXXMainBundle: ~
現在我有一個實體(Mappingpooluser),這需要TicketBundle的MainBundle(用戶)和一個實體(池)的一個實體(和一些不重要的東西):
/**
* XXX\TicketBundle\Entity\Mappingpooluser
*
* @ORM\Table(name="MappingPoolUser")
* @ORM\Entity(repositoryClass="XXX\TicketBundle\Repository\MappingPoolUserRepository")
*/
class Mappingpooluser
{
/**
* @var integer $poolid
*
* @ORM\OneToOne(targetEntity="Pool")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $pool;
/**
* @var integer $userid
*
* @ORM\OneToOne(targetEntity="XXX\MainBundle\Entity\User")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $user;
[getter/setter and this stuff]
直到此時一切正常:) 我可以通過
$em = $this->getDoctrine()->getEntityManager("ticket");
$entities = $em->getRepository('XXXTicketBundle:Mappingpooluser')->findAll();
如果我調用$在控制器獲取Mappingpooluser實體實體[0] - > getPoo如果我調用$ entities [0] - > getUser() - > getId(),我將得到池的正確ID(如上所述:Pool在像Mappingpooluser相同的Bundle中)我會得到一個錯誤:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'm_ticketbundle.User' doesn't exist
那不幹正確的,因爲用戶表在其他數據庫(m_symfony)。
說來話長,總之問:我如何獲得Symfony2中使用的車票實體管理器爲池和默認實體管理器爲用戶?
非常感謝,完美的作品;拯救了我的一天:) – 2015-09-11 15:37:28