/** * Загружаем данные по сотрудникам из файла. * Поле snp используется для заполнения полей name, surname и patronymic * @return \yii\web\Response */ public function actionReadfile() { $filename = 'in/employees.txt'; $readfile = fopen($filename, 'r'); while ($str = fgets($readfile, 1024)) { $items = explode(chr(9), $str); //ФИО; Код; Регион; Должность; Примечание; Код Контрагента if (count($items) != 6) { Yii::$app->session->setFlash('error', 'Файл не соответствует формату!'); break; } if ($items[1] == 'Код') { continue; } //var_dump($items); //continue; $emp = Employees::findOne(['snp' => $items[0]]); if (isset($emp)) { // если в базе есть ФИО то пропускаем (т.е. загрузка не рассчитана на полных тёзок) } else { $emp = new Employees(); $emp->snp = $items[0]; $snp = explode(" ", $items[0]); //var_dump($snp); continue; $emp->surname = $snp[0]; $emp->name = $snp[1]; $emp->patronymic = $snp[2]; $emp->employee_number = $items[1]; $branch_id = Branches::getIdByName($items[2]); if ($branch_id > 0) { $emp->branch_id = $branch_id; } else { $emp->branch_id = 0; //Буланиха } $emp->job_title = $items[3]; $emp->unique_1c_number = $items[5]; $emp->save(); } } fclose($readfile); //die; return $this->redirect(['index']); }