Я определил двух разных менеджеров сущностей в doctrine .yaml
entity_managers:
EM1:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
App\EM1:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/BC1/Domain/Entity'
prefix: 'BC1\Domain\Entity'
alias: App\EM1
EM2:
naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
App\EM2:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/BC2/Domain/Entity'
prefix: 'BC2\Domain\Entity'
alias: App\EM2
, и я добавляю Doctrine EntityManagerInterface в мой сервис:
service.yaml
DoctrineRepository:
class: BC\Infrastructure\Persistence\DoctrineRepository
arguments:
- "@Doctrine\\ORM\\EntityManagerInterface"
DoctrineRepository. php
public function __construct(
EntityManagerInterface $client
) {
$this->entityManager = $client;
}
Я хочу иметь возможность выбрать, какой Entity Manager ранее определен (EM1, EM2), который я хочу использовать при использовании DoctrineRepository. В идеале это будет что-то вроде:
$this->entityManager->useEntityManager('EM2');
Нужно ли вводить другой сервис вместо Doctrine \ ORM \ EntityManagerInterface? Я отладил загрузку менеджеров сущностей и обнаружил, что он автоматически назначает первый при генерации кеша:
cache / dev / getDoctrineRepositoryService. php:
return $this->privates['DoctrineRepository'] = new BC\Infrastructure\Persistence\DoctrineRepository(($this->services['doctrine.orm.EM1_entity_manager'] ?? $this->load('getDoctrine_Orm_EM1EntityManagerService.php')));
Любая помощь будет Буду признателен, спасибо.