我有一个模型(ActiveRecord),它有5 个属性(数据库列)。
我获取特定记录并填充具有3 个字段的表单(不应更新另外两个字段)。
然后我更改特定字段并按保存。
如何更新记录,而不是触及不在表格中的字段?
我有一个模型(ActiveRecord),它有5 个属性(数据库列)。
我获取特定记录并填充具有3 个字段的表单(不应更新另外两个字段)。
然后我更改特定字段并按保存。
如何更新记录,而不是触及不在表格中的字段?
mazzucci指出的方法比必要的更复杂。尝试这个:
YourTable::model()->updateByPk($id, array(
'field1' => NewVal1,
'field2' => NewVal2,
'field3' => NewVal3
));
您可以在控制器中创建一个方法,如下所示:
public function actionUpdate($id) {
$model = $this->loadModel($id, 'User');
if (isset($_POST['User'])) {
$model->setAttributes($_POST['User']);
if ($model->save()) {
$this->redirect(array('view', 'id' => $model->id_user));
}
}
$this->render('update', array(
'model' => $model,
));
}
总而言之,该操作执行以下操作:
因此,您不需要在表单中包含所有模型属性。表格中定义的,将在模型中更改。所有其他字段都不会更改,因为模型是在设置表单更改之前从数据库加载的。