Как сохранить две модели используя простую модель и с табличный вводом + TabularInput.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Как сохранить две модели используя простую модель и с табличный вводом + TabularInput.

Сообщение myks1992@mail.ru »

Всем привет! Наверное, уже надоели мои глупые вопросы, но прошу помощи :D

У меня есть две таблицы и модели к ним:

reg_event (Регистрация на мероприятие)
//Здесь данные о регистрации на мероприятие (дата регистрации, куда, на какое мероприятие и так далее)
user (пользователи системы)
//Здесь данные о пользователе
reg_event_user
//здесь два поля
-reg_event_id (id регистрации из таблицы reg_event)
-user_id

У каждой регистрации может быть от 1 до 25 участников. Поэтому у нас имеется дополнительная таблица reg_event_user. Мы создаем новую регистрацию заполняем данные, которые записываются в таблицу reg_event и затем добавляем от 1 до 25 человек, которые записываются в нашу дополнительную таблицу.

Для добавления новых участников использую расширение https://github.com/unclead/yii2-multipl ... le-columns

У меня получился такой код контроллера:

Код: Выделить всё

public function actionCreate()
    {
        $event_id = RegEvent::getEventId();
        $number = RegEvent::setNumber();

        $request = Yii::$app->request;
        $model = new RegEvent(['number'=> $number, 'event_id' => $event_id]);
        $models = [new RegEventUser()];

        if (!isset($model, $models)) {
            throw new NotFoundHttpException("The user was not found.");
        }

        $model->scenario = $model::SCENARIO_FRONTEND;

        if ($request->isPost && $request->post('ajax') !== null) {
            $data = Yii::$app->request->post('RegEventUser', []);
            foreach (array_keys($data) as $index) {
                $models[$index] = new RegEventUser(['reg_event_id' => $model->id]);
            }
            Model::loadMultiple($models, $request->post());
            Yii::$app->response->format = Response::FORMAT_JSON;
            $result = ActiveForm::validateMultiple($models);
            return $result;
        }

        if ($model->load($request->post()) && $model->save() && Model::loadMultiple($models, $request->post())) {
            return $this->redirect(['index']);
        }

        if (Yii::$app->request->isAjax){
            return $this->renderAjax('_form', [
                'model' => $model,
                'models' => $models,
            ]);

        }

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

Массив данных с табличного ввода приходит такой
[
0 => [
'user_id' => '2'
]
1 => [
'user_id' => '2'
]
]
Помогите и подскажите что не так я делаю? И почему не сохраняются данные в дополнительную таблицу?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как сохранить две модели используя простую модель и с табличный вводом + TabularInput.

Сообщение andku83 »

А с чего вы взяли что они должны сами по себе сохраниться? Вы же их нигде не сохраняете.
Ответить