Для того, чтобы сохранить данные из POST запроса в разные таблицы при помощи Yii, вам необходимо выполнить следующие шаги:
1. Создайте модели для каждой таблицы, в которую вы планируете сохранять данные. Модели этих таблиц должны быть настроены соответствующим образом, включая правила валидации и связи с другими моделями, если таковые имеются.
2. Создайте действие в вашем контроллере, которое будет обрабатывать POST запрос. В этом действии вам нужно будет создать экземпляры моделей, привязать к ним данные из POST запроса и сохранить их в базу данных.
Пример кода может выглядеть примерно так:
public function actionSaveData() { $modelTable1 = new Table1(); $modelTable2 = new Table2(); if (Yii::$app->request->isPost) { $modelTable1->load(Yii::$app->request->post()); $modelTable2->load(Yii::$app->request->post()); $transaction = Yii::$app->db->beginTransaction(); try { if ($modelTable1->validate() && $modelTable2->validate()) { $modelTable1->save(false); $modelTable2->save(false); $transaction->commit(); Yii::$app->session->setFlash('success', 'Data saved successfully.'); return $this->redirect(['site/index']); } else { $transaction->rollBack(); } } catch(Exception $e) { $transaction->rollBack(); Yii::$app->session->setFlash('error', 'Error saving data: ' . $e->getMessage()); } } return $this->render('save_data', [ 'modelTable1' => $modelTable1, 'modelTable2' => $modelTable2, ]); }
В данном примере мы загружаем данные из POST запроса в модели таблиц Table1 и Table2, затем выполняем валидацию и сохранение данных в базу данных в рамках одной транзакции. Если в процессе возникнет ошибка, транзакция будет отменена, что позволит избежать недостоверных данных в базе.
Не забудьте также настроить представление для данного действия (save_data.php), в котором будут формы для ввода данных пользователем.
Надеюсь, что этот пример кода поможет вам понять, как можно сохранять данные из POST запроса в разные таблицы при помощи Yii. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!