я такая ситуацияDoctrine2 Класс таблица наследования Entity ID
<entity name="Company\Entity\User\User" table="usr_user" inheritance-type="JOINED">
<unique-constraints>
<unique-constraint name="username_UNIQUE" columns="username" />
</unique-constraints>
<discriminator-column name="discriminator" />
<discriminator-map>
<discriminator-mapping value="guest" class="\Company\Entity\User\Guest"></discriminator-mapping>
<discriminator-mapping value="user" class="\Company\Entity\User\User"></discriminator-mapping>
</discriminator-map>
<id name="id" type="integer" column="id">
<generator strategy="AUTO" />
</id>
<field name="username" type="string" column="username" length="255" />
<field name="password" type="string" column="password" length="50" />
</entity>
<entity name="Company\Entity\User\Guest" table="usr_guest">
<id name="id" type="integer" column="id">
<generator strategy="AUTO" />
</id>
<field name="additionalField1" type="string" column="additional_field_1" length="255" />
<field name="additionalField1" type="string" column="additional_field_2" length="255" />
</entity>
Когда я генерировать сущности я добавить уделом
class User {
// Some code...
}
class Guest extends User{
// Some code...
}
Проблема возникает Whe я пытаюсь обновить схему базы данных из-за того же " id "имя столбца обоих объектов. Я tryied добавить переопределение атрибутов, но я предполагаю, что это не правильный способ
<entity name="Company\Entity\User\Guest" table="usr_guest">
<id name="id" type="integer" column="id">
<generator strategy="AUTO" />
</id>
<field name="additionalField1" type="string" column="additional_field_1" length="255" />
<field name="additionalField1" type="string" column="additional_field_2" length="255" />
<attribute-override name="id">
<field column="guest_id" />
</attribute-override>
</entity>
Я tryied также изменить имя свойства (а не имя столбца) в guest_id но ошибка такая же
[Doctrine\ORM\Mapping\MappingException]
Duplicate definition of column 'id' on entity 'Company\Entity\User\Guest' in a field or discriminator column mapping.
Должен ли я изменить имя столбца «id» гостя? Где я ошибаюсь?
Спасибо
Я думаю, вы можете удалить id из сущности Guest! Посмотрите на http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html Почему вы выбрали XML для сопоставления? Странный выбор?!? –
@MathieuDormeval Я удалил из xml идентификатор, как вы предложили. Doctrine сгенерировала поле id в схеме db. Меня беспокоило все сущности, которые содержали ссылку на объект (таблицу) гостя через guest.id. Кажется также, что все эти объекты не имели проблем из-за поля guest.id, сгенерированного ORM. Надеюсь (надеюсь), это правильный путь. –
OK сделайте свои тесты, у вас есть еще одна проблема, скажите нам! –