0

私はこの状況を持っています

<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...
}

両方のエンティティの同じ「id」列名が原因で、データベース スキーマを更新しようとすると問題が発生します。属性オーバーライドを追加しようとしましたが、これは適切な方法ではないと思います

<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>

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」列名を変更する必要がありますか? どこが間違っていますか?

ありがとうございました

4

1 に答える 1