未捕获的PHP异常原则\ORM\orException:“;未知实体名称空间别名';AppBundle'&引用;

未捕获的PHP异常原则\ORM\orException:“;未知实体名称空间别名';AppBundle'&引用;,php,entity-framework,doctrine-orm,doctrine,symfony,Php,Entity Framework,Doctrine Orm,Doctrine,Symfony,我刚刚用composer开始了我的第一个项目,并想为它设置数据库和类。但是我被卡住了。我在prod.log中得到了上述错误 我在这里学习了本教程: 我创建了数据库 php bin/console原则:数据库:创建 然后想要创建一个实体 php bin/console原则:生成:实体 当询问实体快捷方式名称时,我输入了AppBundle:Product 然后创建数据库字段等 我收到了这个信息 实体生成 生成实体类src/AppBundle/entity/Product.php:好 生成存储库类sr

我刚刚用composer开始了我的第一个项目,并想为它设置数据库和类。但是我被卡住了。我在prod.log中得到了上述错误

我在这里学习了本教程:

我创建了数据库

php bin/console原则:数据库:创建

然后想要创建一个实体

php bin/console原则:生成:实体

当询问实体快捷方式名称时,我输入了
AppBundle:Product

然后创建数据库字段等

我收到了这个信息

实体生成

生成实体类src/AppBundle/entity/Product.php:好
生成存储库类src/AppBundle/repository/ProductRepository.php:好

一切都好!现在开始工作:)

这听起来好像一切都正常,对吧

现在在我的
ProductController
中,我使用了这个

$products = $this->getDoctrine()
    ->getRepository('AppBundle:Product')
    ->findAll();
我得到了错误

[2016-02-15 18:56:14] request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\ORMException: "Unknown Entity namespace alias 'AppBundle'." at /home/vagrant/work/homestead/test/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php line 271 {"exception":"[object] (Doctrine\\ORM\\ORMException(code: 0): Unknown Entity namespace alias 'AppBundle'. at /home/vagrant/work/homestead/test/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:271)"} []
我也试过了

->getRepository('AppBundle\Entity\Product')
但我明白了

[2016-02-15 19:01:39] request.CRITICAL: Uncaught PHP Exception Doctrine\Common\Persistence\Mapping\MappingException: "The class 'AppBundle\Entity\Product' was not found in the chain configured namespaces " at /home/vagrant/work/homestead/test/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php line 37 {"exception":"[object] (Doctrine\\Common\\Persistence\\Mapping\\MappingException(code: 0): The class 'AppBundle\\Entity\\Product' was not found in the chain configured namespaces  at /home/vagrant/work/homestead/test/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:37)"} []
我怎样才能真正让它工作起来/我刚刚开始这个项目。但教条创造了阶级。我有这样的

/src
/src/AppBundle/
/src/AppBundle/Entity
    Product.php
/src/AppBundle/Repository
    ProductRepository.php
另外,在Product.php中,这是注释的注释(如果有帮助的话)

另外,当尝试使用以下命令来重新创建实体时,我没有收到任何错误消息

我要走了

Generating entities for bundle "AppBundle"
 > backing up Product.php to Product.php~
 > generating AppBundle\Entity\Product

解决方案是删除缓存文件,因此在生产模式下工作时需要删除缓存文件。在调试模式下,这是自动完成的。当然,如果你在3.x中,在2.x中,在app下,手动将prod文件夹放到var下

清除2.x缓存的命令为:

php app/console cache:clear --env=prod

我猜您可能在AppBundle/Resources/config/doctor下有文件?如果是这样,那么它们会干扰您的注释。您对app/config/config.yml中的条令部分做了任何更改吗?我没有文件夹
AppBundle/Resources
。我在创建实体时总是选择了
annotations
,所以不应该有任何配置,对吗?不,我没有在
app/config/config.yml
中做任何更改,生成后您需要
php bin/console原则:schema:update--force
。然后检查
Controller
中的
namespace
必须是
AppBundle\Entity\Product
。是的,然后重试,如果存在,还要删除dev文件夹。只有在调试模式下工作,在生产环境中才需要手动执行此操作。此外,最安全的方法是手动:-),但还要检查所有名称空间是否正确;您可以使用
导入类,并在条令注释中指定
class=Product::class
(不带引号!)。我认为这是最安全的,当通过注释使用映射时,也可以用“代码> PHP bin /控制台原则:缓存:清除元数据< /代码>来清除特定的原则缓存。
php app/console cache:clear --env=prod