如何将使用 kartik-Select2 选择的小部件项目保存到 Yii2 中的数据库


How to save selected with kartik-Select2 widget items to DB in Yii2?

我的问题如下。我正在尝试将多个项目插入 mysql 数据库表。我使用 Kartik-Select2 小部件进行项目选择。以下代码对我有用,我可以使用它选择多个项目。

 <?= $form->field($model, 'categories')->widget(Select2::className(), [
    'data' => $model->availableCategories(),
    'model' => $model,
    'attribute' => 'categories',
    'language' => 'en',
    'options' => ['placeholder' => 'Select a site...'],
    'pluginOptions' => [
        'allowClear' => true,
        'multiple' => true,
        ],
    ]) ?>

但是现在如何将所选项目保存到数据库表。所选项目的存储位置(小部件中是否有一些数组)?我在模型类中定义的"类别"属性为:

public $categories = [];

我以为选定的项目会填充到它。但它不起作用(表单提交后数组为空)。我阅读了许多类似的主题,但没有找到完整和完整的解释它是如何工作的。我是 Yii2 的新手,也许迷路了。感谢任何帮助。

通常以这种方式保存多选项目(这是一种简化的方式)

  public function actionYourAction()
  {
      $post = Yii::$app->request->post();
      if (!empty($post)){
          $postModel = $post['YourModel'];
          $postModelMulti=  $postModel['your_multi_attribute'];
          if ( !empty( $postModelMulti) ){
              foreach ($postModelMulti as $key => $value) {
                  $newModel  = new YuorModelToAdd();
                  $newModel->your_attribute = $value;
                  $newModel->save();
              }
          }  
      } 
      ......