Symfony2 - 类X不是有效实体或映射超类

时间:2014-01-10 13:15:50

标签: symfony doctrine fosuserbundle

工作了几个月之后,当我尝试从终端运行命令时,我突然收到此错误。 “X”是用户实体,扩展了FOSUserBundle。

在这里看一些类似的问题,常见的错误似乎是错误的注释,没有在AppKernel中注册bundle,或者没有在配置中启用auto_mapping。

用户类启动(我不认为属性是必要的?),如下所示:

<?php

namespace Acme\UserBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * @ORM\Table()
 */
class User extends BaseUser
{
    // ...
}

捆绑包在AppKernel中注册:

  $bundles = array(
        // ...
        new Acme\UserBundle\UserBundle(),
        // ...
  );

启用自动映射(并且未在_prod或_dev配置中禁用),如您所见:

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

另外,FOSUserBundle被告知使用正确的实体:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Acme\UserBundle\Entity\User

不起作用?

我在这里偶然发现了一个问题,它通过禁用eAccelerator解决了问题。我们确实在服务器上运行了eAccelerator,但是在清除缓存之后我已经验证了运行命令时phpinfo()输出中的本地值被禁用了,正如预期的那样:

eaccelerator.enable => 0 => 1
eaccelerator.optimizer => 0 => 1

当我运行doctrine:mapping:info命令时,我可以看到我的UserBundle丢失了。我在这里完全失去了什么是缺失或不正确的。有人有什么建议吗?值得一提的是,网站的前端工作正常,这使得用户实体。

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,用整个@Entity行删除EntityRepository是一个困倦的错误,导致“非有效实体”错误。

我花了很多时间用FOSUserBundle:User超类地图搜索问题,但问题出现在我的课堂上,我不得不知道它没有出现在doctrine:mapping:info上。