Недействительный объект или сопоставленный суперкласс
У меня есть 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
Ответы
Ответ 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