移动文件系统中的类之后,“类XXX不是有效的实体或映射的超类”

我在Aib \ PlatformBundle \ Entity \ User.php中有一个实体类

我尝试通过创build表单类没有任何问题

PHP应用程序/控制台教条:生成:formsAibPlatformBundle:用户

现在我已经将名称空间更改为Aib \ PlatformBundle \ Entity \ Identity \ User,但是当我尝试使用我之前说过的任务生成表单时,它说:

“类Aib \ PlatformBundle \ Entity \ User不是有效的实体或映射的超类”。

这是文件内容:

<?php namespace Aib\PlatformBundle\Entity\Identity; use Doctrine\ORM\Mapping as ORM; /** * Aib\PlatformBundle\Entity\Identity\User * * @ORM\Table() * @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity \UserRepository") */ class User { ... 

任何想法?

symfony2.0.4

有这个问题 – 不要忘记注释* @ORM\Entity如下所示:

 /** * Powma\ServiceBundle\Entity\User * * @ORM\Entity * @ORM\Table(name="users") */ 

检查你的config.yml文件,应该包含这样的东西:

 # Doctrine Configuration doctrine: dbal: driver: %database_driver% host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% charset: UTF8 types: json: Sonata\Doctrine\Types\JsonType orm: auto_generate_proxy_classes: %kernel.debug% # auto_mapping: true entity_managers: default: mappings: FOSUserBundle: ~ # ApplicationSonataUserBundle: ~ YourUserBundle: ~ SonataUserBundle: ~ 

将您自己的包添加到映射列表中。

昨天有这个问题,发现这个线程。 我创build了一个新的包(如MyFooBundle / Entity / User.php)映射的实体,根据文档做了所有的configuration,但从上面得到同样的错误,当试图加载应用程序。

最后我意识到我没有在AppKernel中加载MyFooBundle:

 new My\FooBundle\MyFooBundle() 

debugging这个好方法是运行这个命令:

 app/console doctrine:mapping:info 

在我的情况下,问题是通过将我的服务器caching从eAccelerator更改为APC来解决的 。 显然,eAccelerator会从打破注释的文件中去除所有注释。

对付马克和莫格曼来说,这是一个很大的麻烦

我知道它必须在config.yml中的某个地方,并且可以对它进行testing

 app/console doctrine:mapping:info 

真的帮了!

事实上,这个命令只是简单地停止了一个错误…没有反馈,但是当一切都好的时候,你应该能够看到你列出的所有实体。

我通过删除bundle的Resources / config / doctrine文件夹中冲突的自动生成的orm.php文件解决了相同的exception; 根据文档:“一个bundle只能接受一种元数据定义格式,例如,不能将YAML元数据定义与注释的PHP实体类定义混合在一起。

我通过将第二个parameter passing给Doctrine\ORM\Configuration::newDefaultAnnotationDriver来解决这个问题。

我花了一段时间挖掘谷歌和源代码。

我的情况有点特别,因为我使用的映射指向与Symfony安装无关的另一个目录,因为我也必须使用遗留代码。

我重构了遗留实体,并停止了工作。 他们过去使用@ORM\Annotation而不是@ORM\Annotation ,所以在重构之后,它简直没有读取元数据。 通过不使用一个简单的注释读者,一切似乎是好的。

我通过在创buildMetaDataConfiguration时设置$useSimpleAnnotationReader=false解决这个问题。

非常高的可能性,你有PHP 5.3.16(Symfony 2.x将无法使用它)。 无论如何,你应该加载http://you.site.name/config.php检查页面如果你有项目没有在托pipe服务器上工作,下一行必须删除在“config.php”:;

 if (!in_array(@$_SERVER['REMOTE_ADDR'], array( '127.0.0.1', '::1', ))) { header('HTTP/1.0 403 Forbidden'); exit('This script is only accessible from localhost.'); } 

祝你好运!

通过使用app / console_dev而不是app / console,我摆脱了与你的情况相同的错误信息