Yii2将一个模型保存到另一模型

时间:2018-08-09 07:23:53

标签: php yii yii2

早上好,我的项目有问题。

我有2个关联表:

------------------       ------------------
|     Email      |       |      Draft     |
------------------       ------------------
|   id_email     |       |    id_draft    |
|   subject      |       |    subject     |
|   content      |       |    content     |
|   to           |       ------------------
|   etc....      |
------------------

当我们在Email中创建email-form时,所有值都将保存到Draft表中,并且肯定不会保存在Email表中。

控制器:

public function actionCreate($id_email)
{
    $model = new Email();
    if ($model->load(Yii::$app->request->post())) {

        $modal =Draft::find()->where(['email_id' => $id_email])->one();
        $date  =date('Y-m-d H:i:s');
        $modal->to = $model->to;
        $modal->subject = $model->subject;
        $modal->content = $model->content;
        $modal->date_added = $date;
        $modal->save();
        return $this->redirect(['draft/index']);
    }

    return $this->render('create', [
        'model' => $model,
    ]);
}

这是视图上的button

<?= Html::a('Save As Draft', ['create','id_email'=>$model->email_id], ['class' => 'btn btn-primary']) ?>

但是我遇到了错误

enter image description here

谢谢

2 个答案:

答案 0 :(得分:0)

{{1}}

您在此处为新的电子邮件模型使用属性email_id,但是在新模型中,所有属性均为空。这就是为什么您会出错。

您必须为新的电子邮件模型生成ID。可能是您将使用最后一个增量ID + 1

*请问我的英语。

答案 1 :(得分:-1)

检查控制器操作格式:

 <?= Html::a('Save As Draft', ['/controllerName/create','id_email'=>$model->email_id], ['class' => 'btn btn-primary']) ?>

或者在另一个模块的另一个控制器中

 <?= Html::a('Save As Draft', ['/moduleName/controllerName/create','id_email'=>$model->email_id], ['class' => 'btn btn-primary']) ?>

或在同一控制器中:

<?= Html::a('Save As Draft', ['create','id_email'=>$model->email_id], ['class' => 'btn btn-primary']) ?>