Импортирование Excel имеет ошибку "Недопустимое смещение строки" в моем контроллере

Я пытаюсь импортировать Excel в таблицу базы данных "users", но при этом возникает ошибка, сообщающая о недопустимом смещении строки "email". Я попытался удалить "электронную почту", тогда он говорит, что незаконная строка смещает "имя пользователя" сейчас. Это действительно ошибка в контроллере? Или, возможно, причина в том, что у меня также есть хранилище. Это мой код для контроллера

public function userImport()
{
    if( Input::file('file_import') ) {
        $path = Input::file('file_import')->getRealPath();
        $inserts = [];
        Excel::load($path,function($reader) use (&$inserts)
        {
        foreach ($reader->toArray() as $rows){
            foreach($rows as $row){
                $inserts[] = ['email' => $row['email'], 'username' => $row
                ['username'], 'password' => $row['password'], 'first_name' => $row['first_name'],'middle_name' => $row['middle_name'], 'last_name' => $row['last_name'], 'gender' => $row['gender'],
                 'civil_status' => $row['civil_status'], 'spouse' => $row['spouse'], 'religion' => $row['religion'],'emergency_no' => $row['emergency_no'],'previous_work' => $row['previous_work'],
                 'remarks' => $row['remarks'],'course' => $row['course'],'biometrics' => $row['biometrics'],'immediate_head' => $row['immediate_head'],'designation' => $row['designation'],'level' => $row['level'],
                 'emp_status' => $row['emp_status'],'dependents' => $row['dependents'],'date_hired' => $row['date_hired'],'regularization_date' => $row['regularization_date'],'remmitance_date' => $row['remmitance_date'],
                 'tin' => $row['tin'],'philhealth' => $row['philhealth'],'pagibig' => $row['pagibig'],'sss' => $row['sss'],'umid' => $row['umid'],'phone' => $row['phone'],'avatar' => $row['avatar'],
                 'address' => $row['address'],'country_id' => $row['country_id'],'role_id' => $row['role_id'],'birthday' => $row['birthday'],'status' => $row['status']];
            }
        }
        });
    }  

    if (!empty($inserts)) {
        DB::table('users')->insert($inserts);
        return back()->with('success','Inserted Record successfully');                  
    }

    return back();
}

1 ответ

Решение

Согласно вашему выброшенному $rowsпохоже, что вам не нужен другой foreach внутри другого foreachизмени свой код.

// readability purpose
$rows = $reader->toArray();

foreach ($rows as $row){
    $inserts[] = ['email' => $row['email'], 'username' => $row
    ['username'], 'password' => $row['password'], 'first_name' => $row['first_name'],'middle_name' => $row['middle_name'], 'last_name' => $row['last_name'], 'gender' => $row['gender'],
     'civil_status' => $row['civil_status'], 'spouse' => $row['spouse'], 'religion' => $row['religion'],'emergency_no' => $row['emergency_no'],'previous_work' => $row['previous_work'],
     'remarks' => $row['remarks'],'course' => $row['course'],'biometrics' => $row['biometrics'],'immediate_head' => $row['immediate_head'],'designation' => $row['designation'],'level' => $row['level'],
     'emp_status' => $row['emp_status'],'dependents' => $row['dependents'],'date_hired' => $row['date_hired'],'regularization_date' => $row['regularization_date'],'remmitance_date' => $row['remmitance_date'],
     'tin' => $row['tin'],'philhealth' => $row['philhealth'],'pagibig' => $row['pagibig'],'sss' => $row['sss'],'umid' => $row['umid'],'phone' => $row['phone'],'avatar' => $row['avatar'],
     'address' => $row['address'],'country_id' => $row['country_id'],'role_id' => $row['role_id'],'birthday' => $row['birthday'],'status' => $row['status']];
}

$rows уже представляет каждую строку, поэтому вам, вероятно, следует переименовать ее в $row,

Другие вопросы по тегам