У меня есть 2 пакета в моей платформе Symfony2:
«MainBundle» с пользовательской сущностью и «TicketBundle» со всеми моими материалами для системы отслеживания ошибок. В этом случае важны только сущности "Pool" и "Mappingpooluser".
Они оба используют разные менеджеры сущностей, потому что мне нужно использовать 2 разные базы данных. (см. мой config.yml ниже)
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 (и некоторые несущественные вещи):
/**
* 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]
До этого момента все работало нормально :)
Я могу получить сущность Mappingpooluser в контроллере через
$em = $this->getDoctrine()->getEntityManager("ticket");
$entities = $em->getRepository('XXXTicketBundle:Mappingpooluser')->findAll();
Если я вызову $ entity [0] -> getPool () -> getId (), я получу правильный идентификатор пула (как уже упоминалось: пул находится в том же пакете, что и Mappingpooluser), но если я вызову $ entity [0] -> getUser () -> getId () Я получу ошибку:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'm_ticketbundle.User' doesn't exist
Это правильно, потому что таблица User находится в другой БД (m_symfony).
Long Story, краткий вопрос: Как заставить Symfony2 использовать менеджер сущностей заявок для пула и менеджер сущностей по умолчанию для пользователя ??