【发布时间】:2011-08-01 01:55:53
【问题描述】:
关于如何调试未更新的修改字段的任何想法?创建的字段工作正常。
我不确定您需要查看哪些代码,所以请告诉我!
谢谢
【问题讨论】:
标签: cakephp
关于如何调试未更新的修改字段的任何想法?创建的字段工作正常。
我不确定您需要查看哪些代码,所以请告诉我!
谢谢
【问题讨论】:
标签: cakephp
我今天遇到了同样的问题,发现modified字段只有在进行了任何更改后才更新,否则该字段将不会被触及。
【讨论】:
就像 Anh Pham 所说,modified 和 created 字段需要为DATETIME,并且它们还需要默认为NULL,如explained in the CakePHP book about the subject。
【讨论】:
您很可能正在覆盖该字段,请在保存之前从对象中取消设置该字段:
unset($user['User']['modified']);
现在你可以保存它了:
$this->User->save($user);
【讨论】:
你应该尝试检查你是否没有使用
$this->ModelName->read(NULL, $id);
在保存数据之前,如果您认为自己没有保存数据,请仔细检查
【讨论】:
该字段应命名为“已修改”,类型为“日期时间”。 Cake 应该会自动为您更新该字段。如果您想检查,只需查询它,或者查看数据库。
【讨论】:
如果您使用手动更新查询,也可能会出现此问题。该字段仅在您使用 Cake 自己的函数时更新。
【讨论】:
在 AppModel.php 中,只需编写以下代码。
public function beforeSave($options = array()) {
parent::beforeSave();
if (isset($this->data[$this->alias]['modified'])) {
unset($this->data[$this->alias]['modified']);
}
if (isset($this->data[$this->alias]['created'])) {
unset($this->data[$this->alias]['created']);
}
}
这适用于所有型号。但我们也可以为个别模型做到这一点。
由于我们使用parent::beforeSave(); 作为第一行,因此这可以在每个单独的模型中覆盖。
感谢继承。
【讨论】: