Symfony PhpStorm不';不承认实体类别

Symfony PhpStorm不';不承认实体类别,symfony,phpstorm,Symfony,Phpstorm,PhpStorm似乎不认识我的任何条令实体类或它们的方法 $comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id)); $comment->getId(); /* PHPSTORM THROWS WARNING: Method getId() not found in subject class */ 只有当我显式地对错误进行注释时,错误才会消失——这确实会使我的控

PhpStorm似乎不认识我的任何条令实体类或它们的方法

$comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id));

$comment->getId(); 
/* PHPSTORM THROWS WARNING: Method getId() not found in subject class */
只有当我显式地对错误进行注释时,错误才会消失——这确实会使我的控制器混乱不堪

/* @var \MyBundle\Entity\Comment $comment */
$comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id));
有没有办法在我的实体类中为PhpStorm记录这些内容


我正在PhpStorm 8中使用Symfony2插件。谢谢

我对Symfony2插件也有同样的问题,这可能不是一个好的解决方案,但它可以工作

/** @var EntityManager $em */
$em = $this->doctrine->getManager();

你的问题现在应该解决了。缓存文件夹中代理类的多个
getRepository
实现出现问题。只需更新到>=0.11.81,我就遇到了这个问题。通过清除条令元数据神奇地解决了问题:

php app/console doctrine:cache:clear-metadata
编辑:在symfony插件的GitHub reposiory中,有一个关于发生此问题时应做什么的简要说明:

自动完成(或其他)不起作用!救命啊

[……]

许多功能需要 app/cache/dev/appDevDebugProjectContainer.xml文件存在。它是 在开发环境(open/app_dev.php)中启动应用程序时生成 在浏览器或php应用程序/控制台中)

由于我的服务器是远程的,因此手动同步文件
app/cache/dev/appDevDebugProjectContainer.xml
解决了我的问题


相反,当我在本地服务器上工作时,我上面编写的命令帮助我使autocomplete再次工作。

现在,我更喜欢将存储库声明为服务,这样您就不会遇到这些类型提示问题:

services:
    MyBundle\Entity\CommentRepository:
        class: MyBundle\Entity\CommentRepository
        public: true
        factory: ['@doctrine', getRepository]
        arguments:
            - MyBundle\Entity\Comment
然后在控制器中:

use MyBundle\Entity\CommentRepository;

$comment = $this->get(CommentRepository::class)->findOneBy(['id' => $id]);

看起来很有希望,但我认为它只适用于静态方法,而且我认为它无法正确解析
MyBundle:
名称空间别名。谢谢!这比在每个实体上做评论要好。+1,为我工作。确切地说,对于Symfony 3:php bin/console原则:缓存:清除元数据