Class ..Entity \ User не является допустимым объектом или сопоставленным суперклассом - PullRequest
5 голосов
/ 03 ноября 2011

Я получаю эту ошибку при попытке очистить кеш (например):

[Doctrine \ ORM \ Mapping \ MappingException] Класс Aib \ PlatformBundle \ Entity \ Пользователь не являетсядопустимый объект или сопоставленный суперкласс.

Это User.php:

<?php
// src/Aib/PlatformBundle/Entity/User.php

namespace Aib\PlatformBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

}

И это место, где хранится User.php:

javier @ javier: ~ / programacion / aib / src / Aib / PlatformBundle / Entity $ ls User.php UserRepository.php

Это AppKernel.php:

public function registerBundles()
{
    $bundles = array(
        ...
        new Aib\PlatformBundle\AibPlatformBundle(),
        ...
    );

sf 2.0.4

Ответы [ 6 ]

13 голосов
/ 11 февраля 2013

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

/**
 * @ORM\Entity
 * @ORM\Table(name="listtype")
 */
class ListType
{
    ...
}
4 голосов
/ 05 декабря 2011

У меня был точно такой же опыт с моей реализацией FOS UserBundle, и я обнаружил, что смог решить проблему, удалив папку MyBundle \ Resources \ config \ doctrine.

Я не полностью понимаю причину (новичок), но думаю, что проблема заключается в том, что содержимое базы данных построено в разных направлениях, то есть из сущностей доктрины, и путем обратного проектирования некоторых таблиц.

2 голосов
/ 23 апреля 2013

У меня была такая же проблема, и это оказалось app / config / config.yml

Нужно было определить комплект по умолчанию, как показано ниже, NameBundle, тогда он работал нормально

orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager: default
    entity_managers:
      default:
        mappings:
          NameBundle: ~
1 голос
/ 17 июля 2012

В моем случае проблема была решена путем изменения кэша моего сервера с eAccelerator на APC .Очевидно, eAccelerator удаляет все комментарии из файлов, что нарушает ваши аннотации.

0 голосов
/ 25 марта 2014

Если вы унаследовали от сопоставленного класса, вы можете добавить @ORM \ SuperMappedClass в аннотацию сущности.Вы можете прочитать большую часть информации в этой статье .

0 голосов
/ 15 декабря 2011

У меня была та же ошибка, но это было потому, что я не включал приложение Sonata:

попробуйте это:

добавьте строку в ваш AppKernel.php

$bundles = array(
...
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...