ric*_*rto 5 php one-to-one soft-delete doctrine-orm
我的代码中包含这些实体。
class Review extends BaseEntity {
/** @ORM\OneToOne(targetEntity="Action", mappedBy="review") */
protected $action;
}
class Action extends BaseEntity {
/** @ORM\OneToOne(targetEntity="Review", inversedBy="action") */
protected $review;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这是“操作”和“评论”之间的OneToOne关系。我的问题是我也对实体使用软删除,因此,当我删除实体时,实际上并没有删除它,只是设置了删除日期。稍后在审核跟踪中,我需要显示已删除的评论,当然,我还需要来自上级操作的信息。我的问题是,我需要建立这种关系吗?还是有更好的方法?
小智 0
老实说,我不太喜欢软删除行为。您需要注意的是,软删除实体是关系数据库中的一种强烈妥协。
在这种特定情况下,您可能需要考虑事件溯源方法。我建议将有关删除和(软)删除实体的信息存储在基于文档的数据库中。
任何其他方法(例如OneToMany)仍然可以,但请记住,这里的风险是通过引入不连贯的关系来降低您的关系。
话虽如此,我完全意识到现实生活与理论有很大不同:)祝你好运。
问候。