2016-08-31 4 views
3

Ich verwende die Kartik - yii2-widget-select2, um die Option zu ermöglichen, mehrere Optionen beim Erstellen in Form zu wählen.So speichern Sie mehrere Werte in der Datenbank von Select2 Widget Yii2

Ich möchte zwei oder mehr Zeilen in die Datenbank eingeben, abhängig von der Anzahl der im select2-Widget ausgewählten Optionen.

Das select2 Widget im Formular ist unten.

<?= $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 
], 
]); ?> 

Der Controller actionCreate ist unten.

public function actionCreate() 
{ 

    // set default values 
    $empModel = new Tasksemp(); 
    $model = new Tasks(); 
    $model->priotiy_level = 'medium'; 
    $model->start_date = date('Y-m-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, 
     ]); 
    } 
} 

Wie kann ich zwei oder mehr Werte in der Datenbank speichern? Wie kann ich iterieren oder wie weiß ich, wie viele Werte ausgewählt sind, damit ich eine Schleife zum Einfügen verwenden kann?

Kann mir bitte jemand helfen oder irgendwelche Vorschläge machen? Danke

Antwort

4

ein foreach fügen Sie Artikel speichern

public function actionCreate() 
    { 

     // set default values 
     $empModel = new Tasksemp(); 
     $model = new Tasks(); 
     $model->priotiy_level = 'medium'; 
     $model->start_date = date('Y-m-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, 
      ]); 
     } 
    } 
+0

Hallo Jithin db. Ich habe genau das versucht, was du gesagt hast, aber es funktioniert nicht. Es nimmt immer noch nur einen Wert für die Datenbank. – user2211486

+0

ur Assign_task_to Feld ist Ganzzahl oder nicht? – jithin

+0

Ja, es ist eine ganze Zahl. – user2211486

Verwandte Themen