【问题标题】:How to save two models in Yii2?Yii2中如何保存两个模型?
【发布时间】:2018-10-26 23:47:44
【问题描述】:

我有订阅表单,其中只有两个字段 fioemail。我有默认生成的SubscribeForm 模型,它返回tableName = inf_users

我得到 POST 数据,使用它并保存到inf_users。但是现在,我需要在 model->save 上一个表之后将值添加到表 act_courses 与结构:

  • id (PK)
  • ser_id (FK)
  • course_id (FK)
  • 状态(FK)
  • action_date(日期)

什么表?我存储用户(在线学校)的所有操作(订单)。但是现在我没有工作代码没有错误。

$model = new SubscribeForm();
$password = generateStrongPassword(12);
$model->password = md5($password);
$infUsersStatuses = $model->getStatuses('inf_users');
$model->status = $infUsersStatuses[0]->id;
$model->reg_date = date('Y-m-d');

if($model->load(Yii::$app->request->post())) {
    $actCoursesModel = new ActCourses();
    $infUser = $model->find()->where(['email' => Yii::$app->request->post('SubscribeForm')['email']])->one();
    $actCoursesModel->user_id = $infUser['id'];
    $actCoursesModel->course_id = $this->courseID;
    $actCoursesStatuses = $model->getStatuses('act_courses');
    $actCoursesModel->status = $actCoursesStatuses[0]->id;
    $actCoursesModel->action_date = date('Y-m-d');

    if ($model->save() && $actCoursesModel->save()) {
      ///someactions
    }

我做错了什么?我在inf_users 中有数据,但在act_courses 中没有数据。

非常感谢!

附: getStatuses('act_courses') - 返回我可以用于表格的所有可用值

【问题讨论】:

    标签: php sql activerecord yii2


    【解决方案1】:

    我做错了什么?我在 inf_users 中有数据,但在 act_courses 中没有数据

    变量 $act_courses 定义在哪里,还有 $inf_users?

    秒:

    $infUser = $model->find()->where(...);
    

    先查找再保存?

    第三个:

    if($model->load(Yii::$app->request->post()))
    

    分配一些数据后加载?

    【讨论】:

    • 我不使用这个变量。你在哪里找到的? act_courses 是一张桌子
    • 了解/查看其他 (2 & 3) 件事。
    • 感谢Find before save?一行
    • 欢迎您! 3也很重要。如果我 POST 以形成 status,例如,我会覆盖你之前的分配,)祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多