У меня есть две таблицы. одна из них - user-table -name - user, а другая таблица с именем profile.
Формат файла CSV для пользователя выглядит следующим образом:
first_name,last_name,username,email,phone,user_role,status,password_hash,auth_key,created_at,updated_at,key_date,reset_key,access_token
Abx,xyz ,8917111039,abca@examplemail.com,891445544,employee,10,$2y$13$jbsLKjG6YtiA1RbilUOeauAS2Zvq5fHB5xh6JnHpfVytvI56IiO32,,,,,,
Alek,buhu,7978019779,sahu_alek@examplemail.com,7978444449,employee,10,$2y$13$jbsLKjG6YtiA1RbilUOeauAS2Zvq5fHB5xh6JnHpfVytvI56IiO32,,,,,,
и для профиля есть отдельный файл CSV.
для создания нового пользователя и профиля, я использую один файл и публикую соответствующие значения отдельно в таблице пользователей и профилей. Теперь, когда число пользователей превысило 1000, я смотрю на импорт пользователей в пакетном режиме с использованием файла csv.
Другой вариант - выгрузить данные непосредственно в первую таблицу пользователей, а затем экспортировать и получить user_id, а затем сбросить его в таблицу профиля. Поскольку я использую Mongodb с полем автоматического идентификатора, я не могу сделать поле идентификатора 1,2,3,4
Еще одним преимуществом я считаю, что мне не нужно будет создавать только один пароль по умолчанию, вместо этого я могу создайте шаблон для пароля.
мой код контроллера для создания профиля и пользователя, как показано ниже:
public function actionCreate()
{
$model = new Employee();
$user = new AddUser();
if ($model->load(Yii::$app->request->post()) && $user->load(Yii::$app->request->post()) ) {
$user->password = $user->password;
$user->phone = $model->official_contact;
$user->email = $model->email;
$user->user_role='employee';
if ($user = $user->adduser()) {
$user->auth_key = Yii::$app->security->generateRandomString();
$user->reset_key = md5(time());
$user->key_date = date('Y-m-d h:i:s');
$user->password_hash = Yii::$app->security->generatePasswordHash($user->password);
$user->username = $model->email;
if($user->save()){
$model->user_id = (string)$user->_id;
$model->file = UploadedFile::getInstance($model, 'file');
if ($model->file != '') {
$model->employee_image = $model->file->basename . '.' . $model->file->extension;
}
$model->save();
$dir = 'web/img/employee';
if ($model->employee_image != '' ) {
if (!file_exists($dir)) {
mkdir($dir);
}
$model->file->saveAs($dir . '/' . $model->file);
Yii::$app->getTable->imgResize($dir, $model->employee_image, 200, 0, 1, 80);
//Yii::$app->getTable->imgResize($dir, $model->image_thumb, 350, 0, 1, 80);
$webpImage=Yii::$app->basePath.'/web/img/employee/'.$model->employee_image;
imagewebp(imagecreatefromjpeg($webpImage), $dir.'/'.basename($model->employee_image,'.jpg').'.webp');
}
return $this->redirect(['view', 'id' => (string)$model->_id]);
}
}
}
return $this->render('create', [
'model' => $model,
'user'=> $user,
]);
}