在我的项目中,我有实体News
,Articles
和Comments
。
用户可以为文章和新闻添加评论。每个用户可以为每篇文章或新文章添加一些评论。
我希望单个Comments
实体具有复合键,用于与News
和Articles
的关系,如
subj_type
(新闻或文章)+ subj_id
(新文章或文章ID)
我可以通过这种方式组织关系吗?或者我必须组织两个不同的评论实体(例如NewsComments
和ArticlesComments
)?
答案 0 :(得分:1)
您可以使用继承映射并使用单表继承来组织三个实体 - Comments,NewsComments和ArticleComments:
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"news" = "NewsComments", "article" = "ArticleComments"})
*/
class Comments
{
protected $type;
protected $doc_id;
// ...
}
/**
* @Entity
*/
class News extends ArticleComments
{
// ...
}
/**
* @Entity
*/
class News extends NewsComments
{
// ...
}
NewsComments和ArticleComments实体将包含(例如)doc_id。在doc_id中,您将存储新闻或文章ID。 您何时可以通过NewsComments存储库获取新闻评论,您将获得仅针对新闻的评论。