Yii2 - Import Multiple users from CSV file

為{幸葍}努か 提交于 2020-05-17 08:46:20

问题


I have two tables. one is user-table -name - user and another table named profile.

The format of csv file for user is like this:

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,,,,,,

and there is separate csv file for profile.

for creating new user and profile, I am using a single file and posting the relevant values separately to user and profile table. Now as the number of users are upwards of 1000, I am looking at importing the users in batch mode using csv file.

Another option is to dump the data directly in first user-table and then exporting and getting the user_id and then dumping it in profile table. As I am using Mongodb with auto id field, I cannot make id field as 1,2,3,4

Another advantage I think that I won't be needed to create just one default password, instead I can create some pattern for password.

my controller code to create both profile and user is like below:

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,
        ]);
    }

来源:https://stackoverflow.com/questions/61511927/yii2-import-multiple-users-from-csv-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!