php - Doctrine SoftDelete 一对一关系

标签 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 之间是一对一的关系。我的问题是我也对我的实体使用软删除,所以当我删除实体时,实际上并没有删除,只设置了删除日期。稍后在审计跟踪中,我需要显示已删除的评论,当然我还需要来自父操作的信息。我的问题是,我需要建立这种关系 OneToMany 吗?还是有更好的方法?

最佳答案

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

在此特定实例中,您可能需要考虑一种事件溯源方法。我建议将有关删除和(软)删除实体的信息存储在基于文档的数据库中。

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

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

问候。

关于php - Doctrine SoftDelete 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219676/

相关文章:

sql - 如何在 SQL Server 和 LINQ-to-SQL 中定义一侧可选的一对一关系?

php - 如何在不重复 header 的情况下合并多个 CSV 文件(使用 PHP)?

PHP OOP 入门

php - Doctrine2 ODM 限制不起作用/mongodb

php - 连接表 symfony2 中的唯一 ID

entity-framework-4 - Entity Framework 4 中的一对一错误

MySQL级联删除如果一对一关系

php - 在 CakePHP 中合并 2 个数组

php - 如何在 where 子句中使用串联 [Codeigniter]

symfony - 如何在Symfony中添加主义过滤器?