在我的Web应用程序中,我需要以这样的方式清除一个特定属性,或者在单击以更新该记录时将其设置为Null。我应该如何继续我无能为力。
答案 0 :(得分:1)
假设您有一个处理表单提交的控制器操作 - 这是通常的情况 - 您将在控制器中有这样的功能:
public function actionUpdate($id)
{
// Load model
$Model = Model::model()->findByPk($id);
// or maybe do it this way
$Model = $this->loadModel($id);
// Check for form POST
if(isset($_POST['Model']))
{
// Mass assignment of Model attributes to matching values in post array
$Model->attributes = $_POST['Model'];
if($Model->save())
{
// Do something, redirect etc
}
}
$this->render('yourView');
}
所以在那里我们将$Model
属性大量分配给表单中POST数组中的匹配值。但在完成之后,您可以覆盖单个属性。例如:
// Check for form POST
if(isset($_POST['Model']))
{
// Mass assignment of Model attributes to matching values in post array
$Model->attributes = $_POST['Model'];
$Model->attribute_a = null;
$Model->attribute_b = '';
$Model->name = 'Anything you like';
$Model->date = 'Anything you like';
// ...etc
if($Model->save())
{
// Do something, redirect etc
}
}
答案 1 :(得分:1)
在模型中,创建一个函数beforeSave()
class Customer extends CActiveRecord
{
....
public function beforeSave() {
$this->last_order = null;
}
....
}