2012-08-28 3 views
2

Symfony 2.1 RC 앱에는 Doctrine 2를 사용하여 간단한 Comment 모델이 있습니다. 모든 댓글에는 usermessage이 있습니다.Symfony2의 일반 댓글 시스템

현재 CommentBundle은 기사에 대한 의견을 관리합니다. 덧붙여 말하자면, 다른 번들에 코드를 복사하지 않고 어떤 종류의 엔티티라도 코멘트 할 수 있기를 원합니다. ...

이 작업을 수행하려면 다음과 같은 엔티티를 참조해야합니다. 의견 하나. 두 개의 필드가 entity_type이고 entity_id 인 것이 좋은 해결책이 될 수 있다고 생각합니다. 그러나 entity_type을 수동으로 클래스에 매핑하지 않고 find 메서드를 사용하여 객체를 가져올 수는 없습니다.

그래서 어떻게 주석에서 엔티티를 참조합니까? 그리고 여러 엔티티에서 작동하는 일반적인 동작을 어떻게 만들 수 있습니까?

답변

3

Commentable이라는 추상 기본 클래스 엔티티를 만들고 Document 또는 Post과 같이 Commentable을 상속하는 엔티티를 생성 할 수 있습니다.

DocumentPost 때문에 Commentable에서 파생됩니다, 당신은 엔티티 각각 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

맞지만 Doctrine은 문서를 Taggable 및 Commentable로 인식 할 수 없습니다. ? – Cydonia7