【发布时间】:2018-04-14 23:54:55
【问题描述】:
我正在将我的项目从 Symfony 2.7 迁移到 3.4,并且在执行一些 Doctrine 固定装置时遇到了问题。正如标题所说,我收到此错误
Error thrown while running command "doctrine:fixtures:load --append". Message: "Circular reference detected for service "service_2", path: "service_2"." ["error" => Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException { …},"command" => "doctrine:fixtures:load --append","message" => "Circular reference detected for service "service_2", path: "service_2"."] []
当我尝试使用服务容器获取服务时,该服务容器已经注入到另一个使用的服务中。场景如下所示:
service_1:
class: Acme\BusinessBundle\ServiceOne
arguments: ["@service_2"]
public: true
tags:
- { name: monolog.logger, channel: s1 }
service_2:
class: Acme\BusinessBundle\ServiceTwo
arguments: ["@doctrine.orm.default_entity_manager", "@logger"]
public: true
tags:
- { name: monolog.logger, channel: s2 }
然后在固定装置中我只是这样做
$s1 = $this->container->get('service_1');
$s2 = $this->container->get('service_2');
获取异常。
但非常奇怪的是,我第二次收到service_2 时出现异常。所以基本上在第一个夹具中我得到两个服务没有任何问题,但是一旦第二个夹具启动并创建$s2,我就会得到ServiceCircularReferenceException(使用xdebug检查)。当然,我对 Symfony 2.7 没有任何问题。
那为什么我第一次没有得到任何异常?为什么我第二次得到它?有什么想法吗?
【问题讨论】:
-
这行是哪个文件?
$s1 = $this->container->get('service_1'); $s2 = $this->container->get('service_2');还是您将 service_1 带入 service_2 课程? -
所有灯具都位于
BusinessBundle/DataFixtures/ORM
标签: php symfony exception doctrine-orm