Я тоже пытаюсь понять это по тем же причинам. Из того, что я прочитал, нет простого способа иметь простые отношения между сущностями, которыми управляют разные (Doctrine) менеджеры сущностей.
https://github.com/doctrine/orm/issues/5769
Использование отношений с несколькими менеджерами сущностей
Вы можете внедрить менеджер / регистратор сущностей в сущность 'event' и использовать ее для получения связанной сущности 'location', используя поле location_id. Хотя это возможно, это, вероятно, не самый чистый, поскольку вы делаете свои сущности зависимыми от менеджера сущностей.
https://matthiasnoback.nl/2014/05/inject-a-repository-instead-of-an-entity-manager/
Лучшим решением, вероятно, является настройка службы, которую вы вводите в сущность 'event'. Затем вы используете эту услугу, чтобы получить местоположение.
Использование EntityManager внутри сущностей Doctrine 2.0
Используя DoctrineRestDriver, вы подключаете объект местоположения так же, как любой другой объект, и вы должны иметь возможность запрашивать местоположение (из API) на основе location_id в событии. Эту логику вы можете легко вставить в зарегистрированный сервис, который вы можете использовать в объекте события.
Хотя служба и решает проблему получения местоположения из события, она не предоставляет вам способ выполнять запросы, объединяющие событие и местоположение. В запросах на ваше мероприятие вы будете ограничены идентификатором location_id.
Я не уверен, что произойдет, если вы зациклите набор из 10 событий, все в одном месте. Будет ли он вызывать API 10 раз, чтобы получить то же место? Можно ли решить эту проблему с помощью кэширования, чтобы уменьшить накладные расходы?
В качестве альтернативы, вы можете настроить отдельный процесс, который кэширует данные API в локальной базе данных, но добавляет другие сложности, особенно связанные с обеспечением актуальности вашего кэша с исходными данными. Представьте себе, что вы пытаетесь поддерживать кэш данных Карт Google в актуальном состоянии ...