как вставить данные в 2 таблицы, т.е. сотрудника и пользователя (перенесено) из единой формы (создание сотрудника) и контроллера в yii2

это моя страница создания вопросов/create.php

`

<?= $form->field($model, 'clinic_id')->dropDownList(
        ArrayHelper::map(Clinic::find()->all(),'id','clinic_name'),
        ['prompt'=> 'Select Clinic']
        )?>

<?= $form->field($model, 'first_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'last_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'user_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?>

<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'mobile')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'is_active')->textInput() ?>

<div class="form-group">
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

`

Контролер сотрудников

public function actionCreate()
{
    $model = new Employee();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

я перенес пользовательскую таблицу, а также включил класс в контроллер, но данные не вставляются в пользовательскую таблицу (только в таблицу сотрудников), что было бы возможно.

В продвинутых yii2 пользователи могут входить в систему из пользовательской таблицы, поэтому я хочу, чтобы данные из таблицы сотрудников также отправлялись в пользовательскую таблицу.

если есть другой лучший способ, чтобы сотрудник мог быть создан и вошел в систему


person Yuvraj verma    schedule 12.09.2017    source источник


Ответы (1)


Добавьте следующий код в действие создания

public function actionCreate()
{
  $employee = new Employee();
  $user = new User();

  if($user->load(Yii::$app->request->post()) AND $employee->load(Yii::$app->request->post()) AND Model::validateMultiple([$user, $employee])) {
    if($user->save(false) AND $employee->save(false))
    {
      return $this->redirect(['index']);
    }
    else{
      return $this->render('create', [
      'employee' => $employee, 'user' => $user,
    ]);
    }

  }
  else {
    return $this->render('create', [
    'employee' => $employee, 'user' => $user,
    ]);
  }
}

Теперь в вашей форме напишите атрибут и модель, которые связаны между собой, например, предположим, что first_name и last_name из модели Employee и пароль и электронная почта из пользовательской модели, а затем

<?= $form->field($employee, 'first_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($employee, 'last_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($user, 'user_name')->textInput(['maxlength' => true]) ?>

<?= $form->field($user, 'password')->passwordInput(['maxlength' => true]) ?>

<?= $form->field($user, 'email')->textInput(['maxlength' => true]) ?>
person Radhe9254    schedule 12.09.2017
comment
Большое спасибо, братан, я могу сохранить все данные в пользовательской таблице. Моя проблема в том, что я не могу сохранить пароль в хешированном формате, вы можете мне помочь - person Yuvraj verma; 13.09.2017
comment
Проверьте, получаете ли вы пароль в контроллере ?? Если да, то приведенный выше код сгенерирует хэш-код. В противном случае используйте собственный код генерации хеша, например $user-›password = Yii::$app-›getSecurity()-›generatePasswordHash($password); $user-›repeat_password = Yii::$app-›getSecurity()-›generatePasswordHash($password); . Напишите этот код чуть выше if($user-›save(false) AND $employee-›save(false)) - person Radhe9254; 13.09.2017