0

在 CakePHP 2.3 项目中,在一个控制器操作中,我想更新一个表的几条记录。要更新的数据作为数组发布,我遍历该数组。

但是,一些新的字段值与当前字段值相关,因此我不能简单地将数据写入数组 $data 并执行 model-save($data)。相反,我做

$record = model->read(null, $id); //$id is retrieved from the posted data array. 
$record['some_field'] = $new_value;
unset($record['modified']);
//in addition I used model->modified = null;, but to no avail
model->save($record);

问题是,修改的字段不会自动更新。在 CakePHP 文档中,我发现“Modified”的值不能出现在要保存的数据中。但仅 unset() 似乎还不够。

cakePHP - modified field not updated user tadasZ 中提到,当您提前使用 model->read() 时它不起作用。

我在文档中找不到任何关于它的信息。但如果是这样的话,有没有办法将 Automagic 用于修改的字段?我可以设置字段值 myswlf (事实上,现在这就是我作为解决方法所做的),但如果有自动方式,我想使用它。

4

2 回答 2

1

当您使用Model::read()时,结果仍然是相同的 CakePHP 格式,$array['Model']['field']所以您必须这样做unset($record['Model']['modified']);

于 2013-11-08T16:52:56.000 回答
0

答案在这里: http ://book.cakephp.org/2.0/en/models/saving-your-data.html#using-created-and-modified

如果您在 Model::save() 之前在 $this->data 中创建或修改了数据(例如来自 Model::read 或 Model::set),那么这些值将来自 $this->data 而不是自动更新。如果你不想这样,你可以使用 unset($this->data['Model']['modified']) 等。

于 2015-02-03T14:40:58.460 回答