单个存储库

时间:2017-09-04 14:27:27

标签: php symfony doctrine

我有一个存储库,我需要使用另一个拥有不同连接的实体管理器。此示例不起作用,因为$this->getEntityManager('anotherConnection')获取当前存储库使用的相同管理器:

class BlahRepository extends \Doctrine\ORM\EntityRepository
{
    public function find($id)
    {
        $qb = $this->createQueryBuilder('a')
                ->select('a')
                ->where('a.id = :id')
                ->setParameter('id', $id);
        $result = $qb->getQuery()->getResult();

        $repositoryFromAnotherManager = $this->getEntityManager('anotherConnection')
                 ->getRepository('Bundle:Entity');

        foreach ($result as $value) {
            $something = $repositoryFromAnotherManager->getTranslatedSomething($value->getSomething());
            $value->setTranslatedSomething($something);
        }

        return $result;
    }
}

我的问题是:是否有可能获得在存储库中保存其他连接的其他实体管理器。注意:不是通过注入来调用此存储库,因此更改services.yml中的getRepository工厂不是解决方案。

1 个答案:

答案 0 :(得分:0)

我使用的解决方案是:创建管理器服务并向其注入2个存储库。当然,如果有人将存储库注入服务,那么您也可以重写工厂doctrine存储库服务。感谢@Cerad