2016-12-02 54 views
1

我有擴展實體A的實體A和實體B.Symfony 2覆蓋實體並添加額外屬性

實體A - 在供應商捆綁中。 實體B - in/src包。

我搜索了很多時間,只有解決方案適合我。它在Doctrine Event loadClassMetadata上使用ClassMetadataListener

但是對實體B的擴展不起作用。我需要將實體A的所有屬性添加到實體B.

我不明白爲什麼。

回答

3

使用Doctrine2時,不能像通常那樣簡單地擴展類。

請查閱chapter 6. Inheritance Mapping的文檔,瞭解如何在實體類上實現繼承。您可能會感興趣in chapter 6.1. Mapped Superclasses

映射超類是一個抽象或具體的類,爲其子類提供持久化的實體狀態和映射信息,但它本身不是一個實體。通常,這種映射超類的目的是定義多個實體類共有的狀態和映射信息。

爲了這個工作,你必須使用@MappedSuperclass註釋到你的實體基類。

+0

您可以使用MappedSuperclass。 –

+0

@GrzegorzKrauze這不正是我在我的答案中提到的文檔中所解釋的。我會在那裏添加一個引用到我的回答... – Wilt

+0

是的,你在我的帖子和mmoreram的帖子後添加了關於MappedSuperclass的部分內容。此前並不明顯。 –

1

在A的頂部添加@MappedSuperclass註釋。這就足夠了:)