PhpStorm无法识别Doctrine的默认实体管理器

Sol*_*ear 5 symfony doctrine-orm phpstorm

我有以下代码:

$repo = $this->get('doctrine.orm.default_entity_manager')
    ->getRepository('Acme:Foo');
Run Code Online (Sandbox Code Playgroud)

记录下来,由于我可以使用$repo,其方法和所产生的实体,所以代码正常运行。

但是,PhpStorm高亮显示了'doctrine.orm.default_entity_manager'字符串,并给我以下错误:

服务缺失

引用特定服务时,我的服务文件中出现了相同的错误。在此之后,很显然,自动完成功能不起作用。我当然可以使用以下解决方法:

/** @var \Doctrine\ORM\EntityManager $em */
$em = $this->get('doctrine.orm.default_entity_manager');
$em->getRepository('Acme:Foo');
Run Code Online (Sandbox Code Playgroud)

这样,我仍然会收到警告,但是自动补全功能可以正常工作。但是,我宁愿尽可能避免此类注释使我的代码保持干净,而且我几乎可以肯定有一个简单的解决方法。我当然已经多次清除了缓存。

我怎样才能解决这个问题?

编辑:我需要提到我正在使用Symfony2插件。

LBA*_*LBA 0

我们采取了以下措施来避免出现您所描述的问题:

在我们的services.yml中我定义了:

    entity_manager:
        alias: doctrine.orm.entity_manager
Run Code Online (Sandbox Code Playgroud)

问题是显然 Symfony 2 插件无法识别一些通常可用的“标准”服务。

现在使用

$this->get('entity_manager');
Run Code Online (Sandbox Code Playgroud)

激活的 Symfony 2 插件没有显示任何问题。

我们对Logger、Mailer 等其他“通用服务”使用非常类似的方法。