Laravel 5.7导入Excel文件:未定义的偏移量

时间:2019-03-20 11:23:54

标签: excel database laravel import laravel-5.7

我正在尝试导入一个excel文件并将其保存到数据库中,但是出现错误并且我不知道这意味着什么,尽管我是Laravel的新手。

  

ErrorException(E_NOTICE)   未定义的偏移:14

这是我的模型代码:

public function model(array $row)
{
    return new Resident([
        'resident_fname' => $row[1],
        'resident_lname' => $row[2],
        'resident_mi'    => $row[3],
        'resident_dob'   => $row[4],
        'role'           => $row[5],
        'resident_age'   => $row[6],
        'resident_address'  => $row[7],
        'resident_contact'  => $row[8],
        'resident_email'    => $row[9],
        'resident_purok'    => $row[10],
        'resident_status'   => $row[11],
        'resident_gender'   => $row[12],
        'resident_religion' => $row[13],
        'ResidentVoter_status'  => $row[14],
    ]);

这是我的控制器代码:

public function import(Request $request)
{
    $import = Excel::import(new ResidentImport, request()->file('import_file'));
    dd($import);
    return view('pages.residents')->with('success', 'Imported Successfully');
}

这是我的“文件”按钮的代码:

<form action="{{ url('/import') }}" method="POST" enctype="multipart/form-data"></a>
        {{ csrf_field() }}
            <input type="file" name="import_file" style="direction: rtl;"></input>
        <button type="submit" name="upload" class="btn btn-success">Submit</button></form>

这是我的路线:

Route::post('/import', 'ImportController@import');

有人可以帮我吗?我真的不知道如何处理此错误。

2 个答案:

答案 0 :(得分:0)

错误提示该行数组没有位于第14位。数组从0开始,因此从1到14访问模型上的0到13。

答案 1 :(得分:0)

将@放在行变量之前。 $dow_numeric = date('w'); // next delivery day from day no switch($dow_numeric) { case 1: // order Monday $deldays = 2; // deliver Wednesday (2 days) break; case 2: // order Tuesday $deldays = 2; // deliver Thursday (2 days) break; case 3: // order Wednesday $deldays = 2; // deliver Friday (2 days) break; case 4: // order Thursday $deldays = 5; // deliver Tuesday (5 days) break; case 5: // order Friday $deldays = 4; // deliver Tuesday (4 days) break; case 6: // order Saturday $deldays = 3; // deliver Tuesday (3 days) break; case 0: // order Sunday $deldays = 2; // deliver Tuesday (2 days) break; } $date = date('Y-m-d'); $newdate = date('Y-m-d', strtotime($date.' + '.$deldays.' days')); $newukdate = date('d/m/Y', strtotime($newdate)); // test the output echo "<br> Deliver after ".$deldays." days on the : ".$newukdate; 。如果未定义行变量,它将忽略。