Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一对一关系原则_Php_Doctrine Orm_One To One_Soft Delete - Fatal编程技术网

Php 一对一关系原则

Php 一对一关系原则,php,doctrine-orm,one-to-one,soft-delete,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") */ pr

我的代码中有这些实体

class Review extends BaseEntity {

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


class Action extends BaseEntity {

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

正如你所见,行动和回顾之间是一种一刀切的关系。我的问题是我对我的实体也使用软删除,所以当我删除实体时,实际上并没有删除实体,只设置了删除日期。稍后在审计跟踪中,我需要显示已删除的评论,当然,我还需要来自父操作的信息。我的问题是,我需要把这段关系变成一个女人吗?或者有更好的方法吗?

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

你可能想在这个特定的例子中考虑事件来源的方法。我建议将有关删除和(软)删除实体的信息存储在基于文档的数据库中

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

尽管如此,我完全意识到现实生活与理论大不相同:)祝你好运


问候。

我想我没有完全理解你的问题,一个女人或一个女人的关系与软删除有什么关系?两者之间的实际问题是什么?定义关系类型取决于您希望对这些实体执行的操作,而不是对行为执行的操作。如果软删除OneToOne关系,则拥有方仍将保留对已删除实体的引用,除非替换/删除/清除该实体,否则无法与新实体关联。但是如果你这样做,那么你将失去对所有者实体的引用,以后将无法记录更改。哦,我明白了,那么就我所知(不多),你可以按照你建议的方式来做,使用一个OneToMany关系并验证,只保留一个活动,其余的软删除,这样你就可以拥有任何试听的历史记录。我将尝试在验证上发布一个答案。嗯,nvm,我的想法是一个
/**@preRemove*/
事件,在验证时,抛出一个异常(这会回滚事务),但是,你永远不想让它删除。。。所以对不起,伙计,我的错:(