symfony 不是有效的实体或Map的超类

xa9qqrwz  于 2023-03-19  发布在  其他
关注(0)|答案(5)|浏览(146)

我有2个捆绑包,1个CMS捆绑包将是父捆绑包。我在两个捆绑包中有重复的实体。像User CMS捆绑包中的用户,我使它成为一个抽象类。(不确定这是否是正确的选择。实际上,我想要的是扩展我的用户实体,如果需要的话。)
CMS用户:

abstract class User implements UserInterface

捆绑包用户:

use MV\CMSBundle\Entity\User as BaseUser;

/**
 * @ORM\Entity(repositoryClass="MV\NameBundle\Repository\UserRepository")
 * @DoctrineAssert\UniqueEntity(fields={"email"}, message="user.email.already.exist" )
 */
class User extends BaseUser
{
    ....
}

我得到错误Class "MV\CMSBundle\Entity\User" is not a valid entity or mapped super class.
我搜索了symfony的文档,找到了这个页面:实体-实体-Map,但他们没有添加一些内容xD
哦,不,我不想使用FOSUserBundle ;)
交响曲:2.1

irlmq6kh

irlmq6kh1#

在我的例子中,我在类定义中缺少* @ORM\Entity

/**
 * @ORM\Entity
 * @ORM\Table(name="listtype")
 */
class ListType
{
    ...
}
yfjy0ee7

yfjy0ee72#

按如下方式定义基类:

/**
 * @ORM\MappedSuperclass
 */
abstract class BaseUser
{
    // ...
}

定义真实的实体:

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

因为您缺少基类上的@MappedSuperclass注解,所以Doctrine抛出您提到的异常。

2nbm6dog

2nbm6dog3#

在我的例子中,问题是eaccelerator,因为它去掉了Doctrine使用的所有注解。禁用eaccelerator后,它工作了。你可以禁用你的php设置,或者,
web/app_dev.phpweb/app.php文件中。

<?php
    ini_set('eaccelerator.enable', 0);
    ini_set('eaccelerator.optimizer', 0);
    //rest of the code.

**注意:**禁用此选项后,请清除symfony2缓存。

gev0vcfq

gev0vcfq4#

我也有同样的问题。但是为了让它工作,我不得不改变台词:

* @ORM\Table
* @ORM\Entity
nnt7mjpx

nnt7mjpx5#

我在Linux服务器中遇到了同样的问题。小心区分大小写。我不得不替换这个:

/**
 * @entity
 * @table(name="listtype")
 */
class ListType
{
    ...
}

用这个:

/**
 * @Entity
 * @Table(name="listtype")
 */
class ListType
{
    ...
}

相关问题