外部存储库中的Symfony EntityManager

时间:2018-07-10 08:43:13

标签: php symfony controller

我需要一些帮助。

我有一个DomainController,可用于定义一些Propertys并创建域实体

public function new(Request $request): Response{
        $data = json_decode($request->getContent(), true);
        $domain = new Domain();
        $domain->setUri($data['record']['uri']);
        $em = $this->getDoctrine()->getManager();
        $em->persist($domain);
        $em->flush($domain);

        $id = $domain->getId();
        $uri = $domain->getUri();

          $businessRepository = new BusinessRepository();
          $result = $businessRepository->newDomainCheck($id, $uri);
        return new JsonResponse($result);
}

您可以看到,我叫我的BusinessRepository->newDomainCheck($id, $uri)

问题:

  

我的$ id变量为空,但刷新后需要此int。

public function newDomainCheck($id, $uri){
        var_dump($id);
        var_dump($uri);

        $domain = new Domain();
        $domain->setUri($uri);
        $domain->setId($id);
        $result = $this->analyzeDomain($uri);
        $res = json_decode($result->getContent(), true);
        $domainCheckResult = $this->createResponse($res, $domain);
        $em = $this
            ->getEntityManager()
            ->getRepository('App:DomainCheckResult');
        $em->persist($domainCheckResult);
        $em->flush($domainCheckResult);
        return new JsonResponse($domainCheckResult);
}

问题:

  

试图调用名为“ App \ Repository \ BusinessRepository”的类的名为“ getEntityManager”的未定义方法

您能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

确保您的存储库已在您的业务实体中正确注册

如果您使用注释,则类似于

@ORM \ Entity(repositoryClass =“ AppBundle \ Repository \ BusinessRepository”)

而不是使用实例化它 $ businessRepository = new BusinessRepository();

您应该使用

从实体经理那里获取

$ this-> getEntityManager()-> getRepository(Business :: class);

如果没有实体,则应将其视为服务,然后将实体管理器注入其中。

此外,在newDomainCheck中,您不使用实体管理器进行刷新,而是使用App:DomainCheckResult存储库。

您的$ em获取者应在

处停止

-> getEntityManager()