Я использую kartik – yii2-widget-select2, чтобы разрешить выбор нескольких вариантов при создании в форме.
Я хочу ввести две или несколько строк в базу данных в зависимости от количества опций, выбранных в виджле select2.
Виджет select2 в форме приведен ниже.
<?= $form->field($model, 'Assign_task_to')->widget(Select2::classname(), //$data = ArrayHelper::map(Employee::find()->all(),'Employee_ID','employee_name'), [ 'data' => ArrayHelper::map(Employee::find()->all(),'Employee_ID','employee_name'), 'language' => 'en', 'options' => ['placeholder' => 'Select an employee ...', 'multiple' => true], 'pluginOptions' => [ 'allowClear' => true ], ]); ?>
Ниже приведено действие actionCreate.
public function actionCreate() { // set default values $empModel = new Tasksemp(); $model = new Tasks(); $model->priotiy_level = 'medium'; $model->start_date = date('Ym-d'); //to get default date if ($model->load(Yii::$app->request->post())) { //Check if field input is empty $model->file = UploadedFile::getInstance($model, 'upload_documents'); if($model->file) { //get instance of uploaded file $fName = time(); $model->file = UploadedFile::getInstance($model, 'upload_documents'); $model->file->saveAs('uploads/'.$fName.'.'.$model->file->extension); $model->upload_documents = 'uploads/'.$fName.'.'.$model->file->extension; } $model->save(); //to save in task_emp table $empModel->Task_ID = $model->Task_ID; $empModel->Employee_ID = $model->Assign_task_to; //<---want to save multiple employee IDs with the same Task ID (multiple rows) $empModel->save(false); return $this->redirect(['view', 'id' => $model->Task_ID]); } else { return $this->render('create', [ 'model' => $model, 'emp' => $empModel, ]); } }
Как сохранить два или более значений в базе данных? Как я повторяю или как узнать, сколько значений выбрано так, чтобы я мог использовать цикл для вставки?
Может ли кто-нибудь помочь мне или дать какие-либо предложения? спасибо
добавьте foreach
для сохранения элементов в db
public function actionCreate() { // set default values $empModel = new Tasksemp(); $model = new Tasks(); $model->priotiy_level = 'medium'; $model->start_date = date('Ym-d'); //to get default date if ($model->load(Yii::$app->request->post())) { //Check if field input is empty $model->file = UploadedFile::getInstance($model, 'upload_documents'); if($model->file) { //get instance of uploaded file $fName = time(); $model->file = UploadedFile::getInstance($model, 'upload_documents'); $model->file->saveAs('uploads/'.$fName.'.'.$model->file->extension); $model->upload_documents = 'uploads/'.$fName.'.'.$model->file->extension; } $model->save(); //to save in task_emp table $array=$model->Assign_task_to; foreach ($array as $value) { $empModel = new Tasksemp(); $empModel->Task_ID = $model->Task_ID; $empModel->Employee_ID = $value; $empModel->save(false); } return $this->redirect(['view', 'id' => $model->Task_ID]); } else { return $this->render('create', [ 'model' => $model, 'emp' => $empModel, ]); } }