Symfony2,博客与评论之间的博客关系

时间:2015-07-14 09:40:04

标签: symfony doctrine comments blogs relation

我正在使用symfony2构建博客,我想知道应该将哪个学说关系映射用于评论。问题是我想在不同的部分使用评论,比如评论图片(不是帖子)或评论评论。所以我需要我的评论实体独立于帖子。

我想尝试OneToMany unidirectionnal,但它会在帖子上强制使用一个不太好的密钥。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

简单方法

最简单的方法是为每个链接的实体创建OneToMany关系。它非常难看,在搜索实体时可能效果不佳,但它确实有效。

映射与此类似:

class Comment
{
    /**
     * @ORM\ManyToOne(targetEntity="Post")
     * @ORM\JoinColumn(nullable=true)
     **/
    protected $post;

    /**
     * @ORM\ManyToOne(targetEntity="Picture")
     * @ORM\JoinColumn(nullable=true)
     **/
    protected $picture;

    /**
     * @ORM\ManyToOne(targetEntity="Comment")
     * @ORM\JoinColumn(nullable=true)
     **/
    protected $comment;
}

您必须自己处理安全问题,以确保评论至少包含一个链接元素,搜索可能会更难,但这是一种基本的方法。

复杂的方式

最有效的方法(但可能是最复杂的)就是创造一个“判别式”"属性和待评论元素"属性,加上Custom Doctrine hydrator一次检索所有对象,但每个对象都是正确的实体。

"要评论的元素"然后,属性将是评论,图片或帖子,并且判别将在这里告诉哪个类被链接。

在SQL术语中,表示表之间没有外键, element_id 依赖于判别

答案 1 :(得分:0)

您可能需要查看Single Table Inheritance。免责声明:我没有直接经验,但经常被建议作为类似问题的答案。