Yii2:ActiveRecord如何卸载/取消设置所有(某些)属性的模型?

时间:2014-08-05 05:43:14

标签: activerecord yii yii2

Yii2 ActiveRecord有一种方法可以使用load()自动将表单数据加载到模型中,这非常好,因为它可以安全地加载带有数据的模型,但是我无法找到一个等效的方法来卸载模型所有属性。

即。是否有方法在Yii2中取消设置模型的所有属性,例如Yii 1.x中的unSetAttributes()方法?

目前唯一可行的方法似乎是

$model->setAttributes(['attribute1'=>NULL,'attribute2' => NULL ... ]);

foreach ($model->attributes as $attribute) {
    $model->$attribute = NULL; 
}

编辑:为了澄清以回应Samuel Liew's answer,在这一点上我只想通过重新启动模型来取消设置所有属性,我也想控制哪些属性被重置,unSetAttributes提供

1 个答案:

答案 0 :(得分:6)

您可以简单地创建模型的新实例。

$model = new MyModel;

或者你可以看到,unsetAttributes in Yii 1就像这样,你可以在基础模型中实现它:

public function unsetAttributes($names=null)
{
    if($names===null)
        $names=$this->attributeNames();
    foreach($names as $name)
        $this->$name=null;
}