PhpStorm不承认Doctrine的默认实体管理器

时间:2016-11-18 13:33:29

标签: symfony doctrine-orm phpstorm

我有以下代码:

$repo = $this->get('doctrine.orm.default_entity_manager')
    ->getRepository('Acme:Foo');

对于记录,代码工作正常,因为我可以使用$repo,它的方法和生成的实体没有问题。

然而,PhpStorm会突出显示'doctrine.orm.default_entity_manager'字符串并给出以下错误:

  

缺少服务

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

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

这样我仍会收到警告,但自动完成功能正常。但是,我宁愿尽可能地保持我的代码清除这种注释,而且我几乎可以肯定有一个简单的解决方法。我当然多次清除缓存。

我该如何解决这个问题?

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

4 个答案:

答案 0 :(得分:4)

在PhpStorm中,我不小心将目录“var”标记为“Excluded”
所以我的“修复”很简单:
右键单击目录,“将目录标记为” - > “取消排除”

答案 1 :(得分:2)

使用最新稳定的PHPStorm和Symfony插件,我遇到了一些服务问题,因为我的var/cache/位于我的流浪盒中/dev/shm(而PHPStorm正在Windows上运行)。

当我拥有所有文件var/cache时,它应该运行良好。

我认为需要生成var/cache/dev/appDevDebugProjectContainer.xml,最新且可访问。

答案 2 :(得分:0)

我们采取了以下措施来避免像您一样的问题:

services.yml 中,我定义了:

    entity_manager:
        alias: doctrine.orm.entity_manager

问题是很明显,Symfony 2插件并不能识别某些标准。通常可用的服务。

现在使用

$this->get('entity_manager');

并未显示已激活的Symfony 2插件的任何问题。

我们对其他' (如Logger,Mailer等)使用非常类似的方法。

答案 3 :(得分:0)

如评论中所述。签入Settings -> Plugins搜索 Symfony插件 然后安装它。 enter image description here