如何在yii2中从单个表单和控制器向2个表插入数据

时间:2016-07-12 12:46:00

标签: php yii2

这是我的创建页面

问题/ create.php

<?php $form = ActiveForm::begin(); ?>
<br><br><br>
<?= $form->field($model, 'question')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'topic')->textInput(['maxlength' => true]) ?>
<?= $form->field($model1, 'askid')->textInput(['maxlength' => true]) ?>

 <div class="form-group">
  <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') :   Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  </div>

<?php ActiveForm::end(); 

askid是另一个表格中的字段问题

questioncontroller

public function actionCreate()
{
    $model = new Questions();
    $model1 = new Askquestions();

     //$model1 -> load(Yii::$app->request->post());



    if ($model1->load(Yii::$app->request->post())) {
        //$model->user_id=Yii::$app->user->identity->id;
         if($model1->save())
        return $this->redirect(['index']);
     } else {
        return $this->render('create', [
            'model' => $model, 'model1' => $model1,
        ]);
    }
   }

我已经为askquestions表生成了模型和crud,并且还在控制器和视图页面中包含了类但是数据没有在表中插入可能的方式

1 个答案:

答案 0 :(得分:1)

可能的解决方案是:(未经测试)

public function actionCreate()
{
    $model = new Questions();
    $model1 = new Askquestions();

    if ($model->load(Yii::$app->request->post()) && $model1->load(Yii::$app->request->post())) {
        //$model->user_id=Yii::$app->user->identity->id;
         if($model->save() && $model1->save())
        return $this->redirect(['index']);
     } else {
        return $this->render('create', [
            'model' => $model, 'model1' => $model1,
        ]);
    }
   }

尝试上述代码一次。

但是这个问题的最佳解决方案是创建和表单模型一样,像LoginForm一样,它将具有单一形式的所有属性,并且可以在单个模型中应用验证。一旦发布并验证了所有内容,您就可以将值保存到相应的模型