在我的项目中,我有News
实体Articles
和Comments
. 用户可以为文章和新闻添加评论。每个用户都可以为每篇文章或新文章添加一些评论。我想要一个Comments
具有复合键的实体,用于与News
和Articles
喜欢的关系
subj_type
(新闻或文章)+ subj_id
(新的或文章的 ID)
我可以通过这种方式组织关系吗?或者我必须组织两个不同的评论实体(比如NewsComments
和ArticlesComments
)?
在我的项目中,我有News
实体Articles
和Comments
. 用户可以为文章和新闻添加评论。每个用户都可以为每篇文章或新文章添加一些评论。我想要一个Comments
具有复合键的实体,用于与News
和Articles
喜欢的关系
subj_type
(新闻或文章)+ subj_id
(新的或文章的 ID)
我可以通过这种方式组织关系吗?或者我必须组织两个不同的评论实体(比如NewsComments
和ArticlesComments
)?
您可以使用继承映射并使用单表继承组织三个实体 - 评论、新闻评论和文章评论:
/**
* @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 存储库获得新闻评论,您将仅获得新闻评论。