Ответ 1
Использование разных диспетчеров объектов (менеджеров сущностей) не позволяет пересекать объектные графы. Этот случай слишком сложный и не управляется Doctrine ORM.
Если вам нужен такой случай, держите графику объекта отключенным, сохраняя идентификаторы связанных объектов (старый стиль) вместо ссылки на них, а затем вручную получайте объекты через службы. Вы можете найти довольно хороший пример того, как это будет работать в примере соединения между Doctrine2 ORM и Doctrine2 MongoDB ODM. Кроме того, вы также можете использовать прослушиватель событий @PostLoad
, который заполняет данные в ваших сущностях, создавая ссылку через репозитории, которые я связал в примере. То же самое для @PostPersist
(который должен вместо этого извлекать идентификаторы для связанных объектов), но будьте осторожны, что этот метод может стать действительно грязным.
Кроме того, если ваша RDBMS поддерживает операции с несколькими базами данных на одном хосте, вы можете просто использовать один EntityManager и ссылаться на другую таблицу с помощью @ORM\Table(name="schemaname.tablename")
.