0

在我的项目中,我有News实体ArticlesComments. 用户可以为文章和新闻添加评论。每个用户都可以为每篇文章或新文章添加一些评论。我想要一个Comments具有复合键的实体,用于与NewsArticles喜欢的关系

subj_type(新闻或文章)+ subj_id(新的或文章的 ID)

我可以通过这种方式组织关系吗?或者我必须组织两个不同的评论实体(比如NewsCommentsArticlesComments)?

4

1 回答 1

1

您可以使用继承映射并使用单表继承组织三个实体 - 评论、新闻评论和文章评论:

/**
 * @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 存储库获得新闻评论,您将仅获得新闻评论。

教义继承映射

于 2013-11-06T09:26:49.953 回答