我目前正在通过https://laraveldoctrine.org软件包在Laravel中使用Doctrine2,但遇到多个连接问题。
我需要对多个连接使用多个教义实体管理器(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,是吗?