Yii2 - импорт нескольких пользователей из файла CSV - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть две таблицы. одна из них - 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,
        ]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...