这两种在CakePHP中保存数据的方法有什么区别

时间:2012-02-29 20:30:55

标签: php cakephp

这两种在CakePHP中保存数据的方法有什么区别

$this->request->data['User']['status'] = 'Active';

$this->User->saveField('status', 'Active');

2 个答案:

答案 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。