Doctrine SoftDelete OneToOne Relationship

时间:2015-05-13 15:47:37

标签: php doctrine-orm one-to-one soft-delete

我的代码中有这些实体。

class Review extends BaseEntity {

    /** @ORM\OneToOne(targetEntity="Action", mappedBy="review") */
    protected $action;
}


class Action extends BaseEntity {

    /** @ORM\OneToOne(targetEntity="Review", inversedBy="action") */
    protected $review;
}

正如您所看到的,它是Action和Review之间的OneToOne关系。我的问题是我也为我的实体使用软删除,所以当我删除一个实体实际上没有被删除时,只设置了一个删除日期。稍后在审计跟踪中,我需要显示已删除的评论,当然我还需要来自父操作的信息。我的问题是,我是否需要与OneToMany建立这种关系?还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

老实说,我不太了解软删除行为。您需要注意的是,软删除实体是关系数据库中的一个强大妥协。

您可能希望在此特定情况下考虑事件采购方法。我建议在基于文档的数据库中存储有关删除和(软)删除实体的信息。

任何其他方法(例如 OneToMany )仍然可以,但请记住,此处的风险是通过引入不连贯的关系来降低您的关系。

话虽如此,我完全清楚现实生活与理论完全不同:)祝你好运。

问候。