在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()函数中有许多对created
,modified
,updated
的引用。我很确定这是它的神奇之处,但是它的功能有很多,我不知道如何扩展它来添加我的行为?
答案 0 :(得分:3)
您不应该修改核心。相反,只需在应用程序中向app_model.php添加beforeSave回调。所有模型都继承自此类。
它看起来像这样:
function beforeSave() {
if(isset($this->_schema['is_cheap'])) {
// your update here
}
return true;
}
答案 1 :(得分:0)
cdburgess 的回答是让我解决问题的原因。为了完整性,我想在这里添加我所做的。
我创建了文件/app/app_model.php
,其中包含以下内容:
class AppModel extends Model
{
function beforeSave()
{
if(isset($this->_schema['is_cheap'])) {
$this->data[$this->alias]['is_cheap'] = isCheap() ? 1 : 0;
}
return true;
}
}
我添加了? 1 : 0;
因为我不确定TRUE / FALSE是否会自动转换为整数。
效果很好,谢谢cdburgess。