Как получить именованного Doctrine Entity Manager в хранилище? - PullRequest
0 голосов
/ 30 мая 2019

В настоящее время я использую Doctrine2 в Laravel через пакет https://laraveldoctrine.org, и у меня возникла проблема с несколькими подключениями.

Мне нужно использовать несколько Doctrine Entity Mangers (EM) для нескольких соединений, чтобы заставить работать несколько баз данных.Для получения документации по умолчанию EM предлагает использовать fe.Контейнер Laravels app('em');.Но для именованных документов EM (https://laraveldoctrine.org/docs/1.3/orm/multiple-connections) предлагает ввести Doctrine\Common\Persistence\ManagerRegistry в хранилище, а затем использовать метод getManager(), чтобы получить желаемый EM.

Но - Doctrine\Common\Persistence\ManagerRegistry - это интерфейс, я понятия не имеюкак его инициализировать и чем. До сих пор я получил:

class RandomRepository extends EntityRepository
{
    public function __construct(ManagerRegistry $managerRegistry)
    {
        $entityManager = $managerRegistry->getManager('namedManager');
        parent::__construct($entityManager, $entityManager->getClassMetadata(Random::class));
    }
}

, но это неправильно, потому что я получил только ObjectManager, а не нужный EntityManager.

Было предложено использовать фабрики, как вZF3 (фабричное определение для DI: https://pastebin.com/XuvB4fU6 и на каждой фабрике определите это так: https://pastebin.com/q5J60d3n), но это должен быть более понятный способ использования нескольких EM без Symfony, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...