我有擴展實體A的實體A和實體B.Symfony 2覆蓋實體並添加額外屬性
實體A - 在供應商捆綁中。 實體B - in/src包。
我搜索了很多時間,只有解決方案適合我。它在Doctrine Event loadClassMetadata
上使用ClassMetadataListener
。
但是對實體B的擴展不起作用。我需要將實體A的所有屬性添加到實體B.
我不明白爲什麼。
我有擴展實體A的實體A和實體B.Symfony 2覆蓋實體並添加額外屬性
實體A - 在供應商捆綁中。 實體B - in/src包。
我搜索了很多時間,只有解決方案適合我。它在Doctrine Event loadClassMetadata
上使用ClassMetadataListener
。
但是對實體B的擴展不起作用。我需要將實體A的所有屬性添加到實體B.
我不明白爲什麼。
使用Doctrine2時,不能像通常那樣簡單地擴展類。
請查閱chapter 6. Inheritance Mapping的文檔,瞭解如何在實體類上實現繼承。您可能會感興趣in chapter 6.1. Mapped Superclasses。
映射超類是一個抽象或具體的類,爲其子類提供持久化的實體狀態和映射信息,但它本身不是一個實體。通常,這種映射超類的目的是定義多個實體類共有的狀態和映射信息。
爲了這個工作,你必須使用@MappedSuperclass
註釋到你的實體基類。
在A的頂部添加@MappedSuperclass註釋。這就足夠了:)
您可以使用MappedSuperclass。 –
@GrzegorzKrauze這不正是我在我的答案中提到的文檔中所解釋的。我會在那裏添加一個引用到我的回答... – Wilt
是的,你在我的帖子和mmoreram的帖子後添加了關於MappedSuperclass的部分內容。此前並不明顯。 –