0

我继续构建我的 CakePHP 应用程序。现在我已经在 MySQL 中创建了所有的数据库模式,运行了一些“cake bake all”,我有很多模型、视图和控制器,我要对它们进行个性化。

在我的许多模型中,我都有以下字段:

  • company_id
  • 由...制作
  • 修改者

正如你所理解的,第一个字段是“行”的所有者的 id,created_by 是创建行的 id,modified_by 是最新更新它的人。

我知道我可以在模型中创建一个 beforeSave 过滤器并更新所有数据(我想我可以知道我是在创建还是更新一行,不是吗?),但现在我有 15 个不同的模型,我希望应用程序会增长更多,所以要编写很多重复的代码。而且,它打破了 DRY 原则。

我的问题是:有什么“优雅”的方法来解决这个问题吗?也许创建一个扩展 AppModel 的类,使用 beforeSave 过滤器来更新字段,并且我的所有模型都继承自新的 Model 类而不是 AppModel?

谢谢你的帮助!

4

3 回答 3

4

使其成为一种行为,并为需要该功能的模型加载它。

http://book.cakephp.org/2.0/en/models/behaviors.html#creating-behaviors

于 2013-11-10T23:48:46.240 回答
2

我认为最合适的方式是创建行为。

您可以在行为中设置 beforeSave 回调,就像您在模型中所拥有的一样。

这是文档的链接http://book.cakephp.org/2.0/en/models/behaviors.html#behavior-callbacks

于 2013-11-10T23:48:18.887 回答
1

您还可以查看 dereuromark 的WhoDidItBehavior作为示例。

于 2013-11-11T06:44:01.047 回答