2

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

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

电影

  • ID
  • 姓名
  • 已删除

类型

  • ID
  • 姓名
  • 已删除

类型电影

  • 流派_id
  • 电影编号
  • 已删除

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

我们已经尝试了 CakeDC 的 Utils 插件中的 SoftDelete 行为 - https://github.com/CakeDC/utils - 这对电影和流派非常有效,但对我们来说似乎不适用于连接表 GenreMovie,它继续已完全删除行。

4

1 回答 1

0

您可以在您的关系中创建一个deleteQuery

还要防止删除连接表中的记录,请查看以下内容:

唯一:布尔值或字符串 keepExisting。

   If true (default value) cake will first delete existing relationship records in the foreign keys table before inserting new ones. Existing associations need to be passed again when updating.
   When false, cake will insert the relationship record, and that no join records are deleted during a save operation.
   When set to keepExisting, the behavior is similar to true, but existing associations are not deleted.
于 2012-05-29T18:50:54.197 回答