这两种在CakePHP中保存数据的方法有什么区别
$this->request->data['User']['status'] = 'Active';
$this->User->saveField('status', 'Active');
答案 0 :(得分:2)
不同之处在于这行代码实际上并没有保存任何数据:
$this->request->data['User']['status'] = 'Active';
它只是在改变该模型上的一个字段。
如果您要更新该字段,然后执行$this->User->save()
,则可以保存整个模型(包括刚更改的字段)。
使用$this->Model->saveField(field,value)
时,实际上是使用当前加载模型的新字段值更新数据源。
您可能希望在未加载所有数据字段的情况下使用saveField()
,并且使用save()
将无法验证或使用空/空值覆盖现有值。
答案 1 :(得分:1)
$this->request->data['User']['status'] = 'Active';
这意味着你之后会调用save()或saveAll()。这些方法将检查数据的有效性。
$this->User->saveField('status', 'Active');
没有数据验证,您需要在调用saveField之前设置$ this-> User-> id。