0
我這種情況Doctrine2類表繼承實體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.
我是否必須更改Guest「id」列名稱? 我在哪裏錯了?
謝謝
我認爲你可以從實體來賓刪除ID!看看http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html爲什麼你選擇XML進行映射?奇怪的選擇?!? –
@MathieuDormeval我已經從xml中刪除了你的建議。 Doctrine在數據庫模式中生成了一個id字段。我擔心所有通過guest.id保留對訪客實體(表)的引用的實體。由於ORM生成的guest.id字段,似乎所有這些實體都沒有問題。我想(希望)這是正確的方法。 –
好吧,讓你的測試,我有你的其他問題,告訴我們! –