Php Symfony 3.4-检测到服务的循环参考

Php Symfony 3.4-检测到服务的循环参考,php,symfony,exception,doctrine-orm,Php,Symfony,Exception,Doctrine Orm,我正在将我的项目从Symfony 2.7迁移到3.4,但由于执行了一些固定装置,我遇到了一个问题。正如标题所说,我得到了这个错误 Error thrown while running command "doctrine:fixtures:load --append". Message: "Circular reference detected for service "service_2", path: "service_2"." ["error" => Symfony\Component

我正在将我的项目从Symfony 2.7迁移到3.4,但由于执行了一些固定装置,我遇到了一个问题。正如标题所说,我得到了这个错误

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');
获取异常

但非常奇怪的是,在我第二次得到
服务\u 2
时出现异常。因此,基本上在第一个装置中,我获得了这两项服务,没有任何问题,但一旦第二个装置启动并创建了
$s2
,我就获得了
服务循环引用异常(使用xdebug检查)。当然,我对symfony2.7没有任何问题


那为什么我第一次没有得到任何例外呢?为什么我第二次得到它?有什么想法吗?

将整个容器传递给服务,然后在其中获得所需的服务。
这种情况在我身上发生过好几次,我总是能够通过更改依赖项注入来修复它。

这行是哪个文件<代码>$s1=$this->container->get('service_1')$s2=$this->container->get('service_2')
或者您是否将service_1纳入service_2类?所有设备都位于
BusinessBundle/DataFixtures/ORM
我知道,我甚至可以在
ServiceOne
中创建一个getter来获取
serviceotwo
,但实际上我不明白为什么第一个fixture可以工作,第二个fixture不能工作。第二个注释提供了更多信息“问题是每个服务都需要在创建自身之前创建另一个服务。”我不认为这是我的情况:
ServiceTwo
不需要
servicetone
-只有
servicetone
需要
ServiceTwo
。在我身上发生这种情况的时候,引起循环的不是我创建的服务,而是应用程序中广泛使用的其他标准服务。比如细枝或教义。我也这么想,但我还是不明白为什么它第一次起作用。这件事也发生在我身上,但它根本不起作用,而这次它似乎起了部分作用。。