我想在cakephp中为每个保存在数据库中的记录保存当前时间戳。所以我的数据库表中有一个字段,其类型为TIMESTAMP,其默认值为CURRENT_TIMESTAMP。但是当我想保存数据时它不起作用。
答案 0 :(得分:0)
来自版本2.x的Documentation
使用创建和修改通过定义创建和/或修改的字段 在您的数据库表中作为datetime字段(默认为null),CakePHP将 识别这些字段并在每次自动填充它们 记录被创建或保存到数据库中(除非数据是 已保存已包含这些字段的值。)
创建和修改的字段将设置为当前日期和 最初添加记录的时间。修改后的字段将是 每当现有记录时,使用当前日期和时间进行更新 保存。
如果您在$ this->数据中创建或修改了数据(例如来自a 在Model :: save()之前的Model :: read或Model :: set)然后是值 取自$ this->数据,而不是自动更新。如果你不这样做 想要你可以使用unset($ this-> data [' Model'] [' modified'])等。 或者,您可以覆盖Model :: save()以始终执行此操作 你:
class AppModel extends Model {
public function save($data = null, $validate = true, $fieldList = array()) {
// Clear modified field value before each save
$this->set($data);
if (isset($this->data[$this->alias]['modified'])) {
unset($this->data[$this->alias]['modified']);
}
return parent::save($this->data, $validate, $fieldList);
}
}
如果使用fieldList保存数据并创建和修改数据 字段不在白名单中,字段将继续 自动分配值。当包含在 fieldList,创建和修改的字段与任何其他字段一样。