2012-08-28 31 views
2

我有我的Symfony 2.1 RC應用程式簡單Comment模型(使用Doctrine 2)。每條評論都有一個user和一個message通用的評論系統中的Symfony2

目前,CommentBundle管理上的文章的評論。我想這是更通用的,無法評論任何一種實體,而不復制跨致力於意見不同的包代碼...

對於這項工作,我也需要一種方法來從引用任何實體評論一。我認爲有兩個字段entity_typeentity_id可以是一個不錯的解決方案。但是,如果沒有將entity_type映射到手動類並使用find方法,我無法從這些對象中獲取對象。

那麼,如何引用一個實體從評論?我該如何創建在多個實體上工作的通用行爲?

回答

3

您可以創建一個名爲Commentable的抽象基類實體,並創建繼承Commentable的實體,例如DocumentPost

由於DocumentPostCommentable衍生,你可以創建一個到實體分別CommentableComment之間一對多的關係。

確保在你的基類的ORM註解繼承包括:

@InheritanceType 
@DiscriminatorColumn 
@DiscriminatorMap 

例子可以Doctrine Project Inheritance Documentation

+0

發現有一種方法可以讓多個通用的行爲像這樣用這種方式?例如,如果我想要一個文檔是可評論和可標記的? – Cydonia7

+0

PHP不會讓你直接創建多個繼承關係。但是,您可以使用魔術函數__call()來解決此問題。這是一個例子。 http://stackoverflow.com/questions/356128/can-i-extend-a-class-using-more-than-1-class-in-php –

+0

權利,但原則不能識別文檔既是可加標籤和Commentable ? – Cydonia7