Как сохранить две модели в Yii2?

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

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

  • id (PK)
  • ser_id (FK)
  • course_id (FK)
  • статус (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.

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

What am I doing wrong? I have data in inf_users, but no data in act_courses

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

второй:

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

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

в третьих:

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

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

Я не использую эту переменную. Где вы его нашли? act_courses - это стол

mepihindeveloper 27.10.2018 02:06

Понятно / См. Другие (2 и 3) вещи.

Николай Лубышев 27.10.2018 02:12

Спасибо за строчку Find before save?

mepihindeveloper 27.10.2018 02:13

Добро пожаловать! 3 тоже важная вещь. если я отправлю POST, чтобы сформировать status, я, например, отменю ваше предыдущее назначение) Удачи!

Николай Лубышев 27.10.2018 02:26

Другие вопросы по теме