从列表框中保存多个选择-Yii2

问题描述

我已经使列表框依赖于dropDownList,当从dropDownList中选择一个选项为我带来了添加到列表框中的数据列表时,它可以保存单个选项,但是在尝试保存多个选择时会出现问题,我无法保存多个选项,我试图在控制器中添加一个foreach,但是会引发错误

DropDownList

 <?PHP echo $form->field($model,'group_id')->widget(Select2::classname(),[
    'data' => $seccion->lgrupo,//I get the group list
    'size' => Select2::MEDIUM,'theme' => Select2::THEME_BOOTSTRAP,'options' => [
        'placeholder' => '-- '.Yii::t('backend','Select').' --','onchange'=>'
            $.post( "lists?id="+$(this).val(),function( data ) {//I get the list of people registered in the group and send it to the listBox
            $( "select#assignment-user_id" ).html( data );
        });',],'pluginoptions' => [
        'allowClear' => true,'addon' => [
        'prepend' => [
            'content' => Html::icon('building')
        ],]
]); ?>

列表框

<?PHP echo $form->field($model2,'users_id')->listBox([],['multiple'=>true,'size'=>17]
                    
 ); ?>

组控制器

public function actionCreate()
{
    $model = new Groups();
    $model2 = new Assignment();
    $seccion = new Group();

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

        if ($model->save(false)) {
            foreach ($model2->users_id as $i => $as) {
                $as->assign_group_id = $model->id_group_list;
                if ($model2->save()) {
                    
                } else {
                    // error in saving model
                }
            }
            return $this->redirect(['view','id' => $model->id_group]);
        }
    }
    return $this->render('create',[
        'model' => $model,'model2' => $model2,'seccion' => $seccion,]);
}

表格

table

希望您能告诉我我做错了什么。

解决方法

public function actionCreate()
{
    $model = new Groups();
    $model2 = new Assignment();
    $seccion = new Group();

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

        if ($model->save(false)) {
            foreach ($model2->users_id as $user_id) {
                $assignmentModel = new Assignment();
                $assignmentModel->user_id= $user_id;
                $assignmentModel->assign_group_id = $model->id_group_list;
                //$assignmentModel->area= '';  //if you want to set some value to these fields
                //$assignmentModel->assignment= '';
                if ($assignmentModel->save()) {
                    
                } else {
                    // error in saving model
                }
            }
            return $this->redirect(['view','id' => $model->id_group]);
        }
    }
    return $this->render('create',[
        'model' => $model,'model2' => $model2,'seccion' => $seccion,]);
}