Yii2 isnewrecord 产生异常 [英] Yii2 isnewrecord generates exception

查看:13
本文介绍了Yii2 isnewrecord 产生异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 yii2 设置中,我有多个模型 - 一个是一对多模型,在表单中我可以编辑字段集或添加新记录.

In yii2 set-up I have multiple models - one being one to many with repeat fields in form where I can edit fieldset or add new records.

但我面临重复密钥错误的问题.

but I am facing issue of duplicate key error.

为了克服同样的问题,我正在尝试使用以下代码:

To overcome the same I am trying this code:

try{
     $userchild->save();
    }
    catch(\Exception $e){
    $userchild->isNewRecord = false;
    $usrchild->save();
}

但我得到了例外:

Unknown Method – yii\base\UnknownMethodException
Calling unknown method: app\controllers\UserController::setIsNewRecord()

我在这里缺少什么?

更新更多代码:

if ($model->load(Yii::$app->request->post()) && $profile->load(Yii::$app->request->post()) && $billinginfo->load(Yii::$app->request->post()) ) {

    $model->username = $model->email;
    $model->save();
    $profile->save();
    $billinginfo->save();
    if (!empty($_POST['UserChildren']) && !is_null($_POST['UserChildren'])) {
     foreach($_POST['UserChildren'] as $rows){

           $userchild = New UserChildren;                            
           $userchild->user_id = $model->id; 
           $userchild->id =$rows['id'];
           $userchild->attributes=$rows;  
           try{
                $userchild->save();
              } catch(\Exception $e){                            
                $userchild->setIsNewRecord(false);
           $usrchild->save();
            }
       }

  }        

现在我收到错误:

Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: app\models\UserChildren::_attributes     

推荐答案

如果你想分配你应该使用的属性

if you want assigng the attributes you should use

 $userchild->setAttributes($rows, TRUE);

https://www.yiiframework.com/doc/api/2.0/yii-base-model#$attributes-detail

https://www.yiiframework.com/doc/api/2.0/yii-base-model#$attributes-detail

这篇关于Yii2 isnewrecord 产生异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆