加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:19:05 所属栏目:PHP教程 来源:网络整理
导读:Yii2 ActiveRecord有一种方法可以使用 load() 自动将表单数据加载到模型中,这非常好,因为它可以安全地加载带有数据的模型,但是我无法找到卸载所有属性模型的等效方法. 即是否有一种方法可以取消设置Yii2中模型的所有属性,如Yii 1.x中的 unSetAttributes() 方
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提供了哪些属性

您只需创建模型的新实例即可.
$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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读