Php 条令-删除父实体后保存关联
我有两个具有一对多关系的实体-用户和日志Php 条令-删除父实体后保存关联,php,doctrine-orm,doctrine,Php,Doctrine Orm,Doctrine,我有两个具有一对多关系的实体-用户和日志 类用户{ /**@OneToMany(targetEntity=“Log”,mappedBy=“user”)*/ 私人日志; } 类日志{ /** *@manytone(targetEntity=“User”,inversedBy=“logs”) *@JoinColumn(name=“user\u id”,referencedColumnName=“id”) */ 私人用户; } 我想要实现的是:一旦我删除用户实体,而不是级联删除所有用户日志,我希望
类用户{
/**@OneToMany(targetEntity=“Log”,mappedBy=“user”)*/
私人日志;
}
类日志{
/**
*@manytone(targetEntity=“User”,inversedBy=“logs”)
*@JoinColumn(name=“user\u id”,referencedColumnName=“id”)
*/
私人用户;
}
我想要实现的是:一旦我删除用户
实体,而不是级联删除所有用户
日志,我希望能够保存这些日志,并且仍然能够保留该用户id
。我正在考虑创建一个新的数据库表old_logs
,其结构与logs
表相同,其中User
实体中的所有数据将在删除User
实体之前复制到该表中,因为我相信我不能让User\u id
指向不存在的用户(使用外键).
通过条令实体类可以这样做吗?进行软删除不是更容易/更好吗。@ArtisticPhoenix您的意思是在用户的列中添加已删除的\u吗?仔细想想,它确实解决了我的问题,但它仍然让logs表充满了不必要的日志。我的计划是在极少数情况下保留这些日志作为一种潜在的恢复选项。为什么不定期备份数据呢?我每周备份1次,本月每周备份1次,之后每月备份1次,等等。我的想法是,备份时间越长,所需的粒度就越小。不确定你的意思是否是这样。软删除听起来像是你需要的。易于实现。你真的会保留当时的冗余记录。但是,您可能希望添加一个“硬删除”选项,或者在X period之后添加一个自动过程,以便能够硬删除所有内容(用户和日志记录)。我决定使用软删除选项。我正在考虑使用条令事件,但我决定使用更简单的方法。如果它们变老了,我还是要删除它们。软删除不是更容易/更好吗。@ArtisticPhoenix你的意思是在用户栏中添加已删除的内容吗?仔细想想,它确实解决了我的问题,但它仍然让logs表充满了不必要的日志。我的计划是在极少数情况下保留这些日志作为一种潜在的恢复选项。为什么不定期备份数据呢?我每周备份1次,本月每周备份1次,之后每月备份1次,等等。我的想法是,备份时间越长,所需的粒度就越小。不确定你的意思是否是这样。软删除听起来像是你需要的。易于实现。你真的会保留当时的冗余记录。但是,您可能希望添加一个“硬删除”选项,或者在X period之后添加一个自动过程,以便能够硬删除所有内容(用户和日志记录)。我决定使用软删除选项。我正在考虑使用条令事件,但我决定使用更简单的方法。如果它们变老了,我还是要删除它们。