自动填充数据库字段(如创建、修改)
在 CakePHP 中,如果您将 created
或 modified
字段添加到任何数据库表中,那么当保存或更新数据时,它会将 DATETIME 分别插入到这些字段中。
我想补充一下。
我在 core.php (app/config/core.php) 中有一个名为 isCheap() 的函数,可以在任何地方调用。该函数返回 TRUE 或 FALSE。
我想扩展 MODEL,以便如果任何表具有 is_cheap TINYINT(1)
字段,它会自动保存到 isCheap() 的值。
我查看了文件 Cake/libs/model/model.php,在 save() 函数中有许多对创建、修改的引用,已更新
。我很确定这就是它发挥魔力的地方,但该函数中有很多内容,我不确定如何扩展它以添加我的行为?
In CakePHP if you add created
or modified
fields to any DB table, then when data is saved or updated it inserts the DATETIME into the fields respectively.
I want to add to this.
I have a function in core.php
(app/config/core.php) called isCheap()
and can be called anywhere. This function returns either TRUE or FALSE.
I want to extend MODEL so that if any table has an is_cheap TINYINT(1)
field it automatically get saved to the value of isCheap().
I looked at the file cake/libs/model/model.php
and in the save() function there are many references to created
, modified
, updated
. I am pretty sure this is where it does its magic but the function has a lot going on in it, and I am not sure how I could extend it to add my behavior?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不应该修改核心。相反,只需将 beforeSave 回调添加到应用程序中的 app_model.php 即可。所有模型都继承自该类。
它看起来像这样:
You shouldn't modify the core. Instead, just add a beforeSave callback to app_model.php in the application. All models inherit from this class.
It would look something like this:
cdburgess 的回答让我找到了解决办法。为了完整起见,我想在这里添加我所做的事情。
我创建了文件
/app/app_model.php
并以此作为内容:我添加了
? 1 : 0;
因为我不确定 TRUE/FALSE 是否会自动转换为整数。效果很好,谢谢 cdburgess。
cdburgess's answer is what led me to my fix. For completness I want to add here exactly what I did.
I created the file
/app/app_model.php
with this as the contents:I added the
? 1 : 0;
becuase I am not sure if the TRUE/FALSE will automatically be converted to integers.Works great, thanks cdburgess.