首页 文章

在CakePHP 2中使用“软删除”与HABTM关系

提问于
浏览
2

使用CakePHP 2.x中的HABTM表,使用“软删除”技术的最佳方法是什么(即在连接表中具有“已删除”的布尔字段),以便在删除关联时,“已删除”字段将仅更新为“1”而不是被删除的行?

一个例子是电影数据库,它可以是一个或多个类型的一部分 . 所有表都有一个“已删除”字段,因此不会从数据库中删除任何数据,只有“已删除”字段会根据需要更新为1或0:

电影

  • id

  • 名字

  • 已删除

类型

  • id

  • 名字

  • 已删除

GenreMovie

  • genre_id

  • movie_id

  • 已删除

添加或编辑电影时,用户可以选择一个或多个类型来关联电影 . 如果从电影中删除先前关联的类型,则“已删除”将设置为“1” . 如果相同的类型然后与电影重新关联,它将更新回“0” .

我们've tried the SoftDelete behaviour from CakeDC'的Utils插件 - https://github.com/CakeDC/utils - 适用于Movie和Genre,但对我们来说似乎不适用于连接表GenreMovie,它继续完全删除行 .

1 回答

  • 0

    你可以在你的人际关系中做出deleteQuery .

    另外为了防止删除连接表中的记录,请查看:

    unique:布尔值或字符串keepExisting . 如果为true(默认值),cake将在插入新密钥之前首先删除外键表中的现有关系记录 . 更新时需要再次传递现有关联 .
    如果为false,则将插入关系记录,并且在保存操作期间不会删除任何连接记录 .
    设置为keepExisting时,行为类似于true,但不删除现有关联 .

相关问题