0

我想要的是

我想查看表上的哪些字段已更改,并将该名称保存到编辑列下的数据库中。

是)我有的

目前,不多。只是标准的 cakePHP 烘焙编辑视图和控制器。我以前做过,但不是用 cakePHP。我所做的是检索记录,如果它与用户输入的不同,则将编辑的列的名称保存在edit与该行对应的列中。

我的问题

有人能告诉我如何将用户输入与数据库中的内容进行比较吗?

4

1 回答 1

3

诸如“可记录”行为之类的行为已经做到了这一点并单独存储信息。我建议你也这样做。“更改”不一定需要放在同一张表中。但是,如果您觉得他们这样做,您可以制作自己的“修改后的”可记录行为,该行为仅创建“差异”并将其存储到您在同一记录上选择的字段中。

PS:您可能还想看看RevisionBehavior。它还包含一些差异算法。然后是WhoDidIt 行为,它存储最后修改记录的用户。不过,在同一张桌子上。因此,结合上述内容应该可以解决问题。

无论哪种方式:

  • 在模型本身或(更清洁)上使用回调(beforeSave/afterSave)作为行为
  • 计算差异
  • 将差异存储在单独的表中,或者在您的情况下存储在额外的表字段中。

实际上,在这里写一些可以完成工作的东西非常简单。这里的自愿练习是把它写得更“通用”。也许您想在将来为其他模型再次重用相同的功能?那时复制和粘贴将是非常糟糕的风格。这里的目标是创建一些可以轻松重用的通用代码。如果您的初始代码有效,请尝试将其重写为通用的 ChangesBehavior,您可以将其附加到您喜欢的任意数量的模型上。您可以查看链接的示例或查看其他行为,以了解如何做到这一点。

您也可以在 github/plugins.cakephp 中发布您的行为,并再次回馈社区。也许其他人也觉得它有用。

于 2013-02-07T12:25:12.533 回答