Как сохранить две модели в Yii2? - PullRequest
0 голосов
/ 27 октября 2018

У меня есть форма подписки, где всего 2 поля fio и email.У меня есть сгенерированная по умолчанию модель SubscribeForm, которая возвращает tableName = inf_users.

. Я получаю данные POST, работаю с ними и хорошо сохраняю в inf_users.Но теперь мне нужно добавить значения в таблицу act_courses после model->save предыдущей таблицы со структурой:

  • id (PK)
  • ser_id (FK)
  • course_id (FK)
  • status (FK)
  • action_date (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.

Большое спасибо!

PS getStatuses('act_courses') - вернуть все доступные значения, которые я могу использовать для таблицы

1 Ответ

0 голосов
/ 27 октября 2018

Что я делаю не так? У меня есть данные в inf_users, но нет данных в act_courses

Где определение переменной $ act_courses, также $ inf_users?

второй:

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

Найти до сохранения?

третий:

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

загрузить после присвоения некоторых данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...