Недействительный объект или сопоставленный суперкласс - программирование

Недействительный объект или сопоставленный суперкласс

У меня есть 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
{
    ....
}

Im получает ошибку Class "MV\CMSBundle\Entity\User" is not a valid entity or mapped super class.

Я искал в документации symfony и нашел эту страницу: entities-entity-mapping, но они не добавили некоторый контент xD

О, и нет, я не хочу использовать FOSUserBundle;)

Symfony: 2.1

4b9b3361

Ответ 1

Определите базовый класс следующим образом:

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

Определите реальный объект:

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

Поскольку вам не хватает аннотации @MappedSuperclass в базовом классе, Doctrine выдает исключение, которое вы упоминаете.

Ответ 2

В моем случае я потерял * @ORM\Entity в своем определении класса.

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

Ответ 3

В моем случае проблема была eaccelerator, потому что она удаляет все комментарии, которые использует Doctrine. После отключения eaccelerator это сработало. Вы можете отключить свои настройки php или

в файле web/app_dev.php или web/app.php.

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

Примечание. Очистите кэш symfony2 после его отключения.

Ответ 4

У меня была та же проблема. Но чтобы заставить его работать, мне пришлось сдвинуть строки:

* @ORM\Table
* @ORM\Entity