Doctrine 1.2中多对多表的软删除

11

我可以在 ManyToMany 关联表上添加 SoftDelete 行为,这将会添加一个 deleted_at 列。不幸的是,将该列设置为非 NULL 值,无法过滤掉关系。这不是我所期望的。

有没有人知道一种解决方法,而不实际引用关联表?


我不了解Doctrine,但你能否运行类似于SQL的SELECT语句:SELECT * FROM myModel WHERE deleted_at IS NULL? - Chase Roberts
我没有使用Doctrine,但我在Laravel中遇到了相关问题。枢轴表通常应该在(pk1,pk2)上具有唯一约束条件,其中pki是表i的主键。在这里进行软删除并不是很直接。如果您软删除一个关系,然后想要插入相同的关系,该怎么办?在这种情况下,您必须取消软删除而不是插入新的关系。但是,如果您在枢轴中存储其他信息,则会丢失软删除的数据。难道把删除的关系存储到另一个没有唯一约束条件的表中不是更好吗? - Hamid Alaei
你使用了哪种类型的软删除?你尝试过通过ManyToOne->HelperClass<-OneToMany自己实现ManyToMany,这样你就可以调整HelperClass了吗? - Jan Mares
不要在你的连接表中引入 deleted_at,而是将其添加到你的引用实体中,在获取实体时过滤你的记录。 - M Khalid Junaid
1个回答

0

你可以在软删除的模板中添加一个监听器。然后,你可以钩入 preDqlSelect 方法并添加所需的 DQL 部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接