我的代码中有这些实体。
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 之间是一对一的关系。我的问题是我也对我的实体使用软删除,所以当我删除实体时,实际上并没有删除,只设置了删除日期。稍后在审计跟踪中,我需要显示已删除的评论,当然我还需要来自父操作的信息。我的问题是,我需要建立这种关系 OneToMany 吗?还是有更好的方法?
最佳答案
老实说,我不太了解软删除行为。您需要注意的是,软删除实体是关系数据库中的一种严重妥协。
在此特定实例中,您可能需要考虑一种事件溯源方法。我建议将有关删除和(软)删除实体的信息存储在基于文档的数据库中。
任何其他方法(如 OneToMany)仍然可以,但请记住,这里的风险是通过引入不连贯的关系来降低你们的关系。
话虽如此,我完全意识到现实生活与理论完全不同 :) 祝你好运。
问候。
关于php - Doctrine SoftDelete 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219676/