更新大型CakePHP模型,但*不要*触摸某些字段?

时间:2010-09-21 20:33:50

标签: php cakephp models

使用CakePHP 1.3

我在CakePHP中有一个相当大的模型,我希望在表单页面上有一些隐藏的元素,以便在保存之前进行(手动)比较/验证,但是在执行saveAll()时(通过验证) ,我不希望这些字段存在(主要是为了避免它们被更新)。

处理此问题的正确方法是什么?$this->data移除它们,然后再将其移至saveAll()

2 个答案:

答案 0 :(得分:3)

我通常会在unset()之前使用saveAll()。如果你考虑一下,这是最简单/最简单的方法。也就是说,除非您想手动命名隐藏的输入字段,而不是由表单帮助程序生成的默认data[Model][field]

但是你必须手动访问它们并手动验证它们。

unset()快速而清晰。

答案 1 :(得分:3)

使用'fieldlist' option

$this->Model->saveAll($data, array('fieldlist' => array('fields', 'to', 'save')));

$fields = array_keys($this->Model->_schema);
$fieldsNotToSave = array('field1', 'field2');
$fieldsToSave = array_diff($fields, $fieldsNotToSave);