отображение отношения многие-к-одному вызывает исключение MappingException - PullRequest
0 голосов
/ 10 декабря 2011

У меня проблема с отображением отношений «многие-к-одному», с которыми я никогда не сталкивался.

Информация:

  • Исключение, которое я получаю при попытке создать схему базы данных:

    [Учение \ ORM \ Mapping \ MappingException]
    Класс Monkeyproof \ Uploaderbundle \ Entity \ Folder не является допустимым объектом или сопоставленный суперкласс.

  • В GroupPermission есть одна папка

  • Я использую сопоставление XML
  • Папка является подклассом Entity , который правильно сопоставлен, так как работал правильно, прежде чем я добавил новое отношение.

Вот мои файлы сопоставления:

GroupPermission.orm.xml:

<?xml version="1.0" encoding="utf-8"?>

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                  http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="Monkeyproof\UploaderBundle\Entity\GroupPermission">

        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
        </id>

        <field name="permissionType" type="integer" nullable="false" />

        <many-to-one target-entity="Folder" field="folder" />
    </entity>

</doctrine-mapping>

Folder.orm.xml:

<?xml version="1.0" encoding="utf-8"?>

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

<entity name="Monkeyproof\UploaderBundle\Entity\Folder"
        repository-class="Monkeyproof\UploaderBundle\Repository\FolderRepository">

    <one-to-many target-entity="Entry" mapped-by="parentFolder" field="content">
        <cascade>
            <cascade-persist/>
            <cascade-remove/>
        </cascade>
    </one-to-many>
</entity>

В моей сущности GroupPermission:

/**
 * @var \Monkeyproof\UploaderBundle\Entity\Folder
 */
protected $folder;

1 Ответ

0 голосов
/ 12 декабря 2011
Class Monkeyproof\Uploaderbundle\Entity\Folder is not a valid entity or mapped super class.

1) Убедитесь, что Monkeyproof \ Uploaderbundle \ Entity \ Folder является сущностью, т. Е.

// Monkeyproof\Uploaderbundle\Entity\Folder
/**
 * @ORM\Entity
 */
 class Folder {..}

2) Это маловероятно, поскольку вы упомянули, что когда-то это работало, но эта ошибка может возникать, когда выне используя автоматическое отображение и использование явного em.У вас есть конфигурация ниже?

doctrine:
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        default_entity_manager: default
        entity_managers:
            default:
                mappings:
                    MonkeyproofUploaderBundle: ~

3) Наконец, убедитесь, что кэш очищен, включая apc, если вы его используете.

...