1

我正在尝试使用该Maatwebsite\Excel软件包让用户导入 csv 或 excel 文件并将其导入数据库。

我是 laravel 的新手,所以我不太确定如何解决这个问题。

我不断收到错误:

ErrorException 未定义的数组键“FIRST” http://127.0.0.1:8000/import-form

CSV 样本数据

FIRST,LAST,EMAIL,PHONE,DEPARTMENT,LOCATION
test name 1,teast last 1,test@mail.com,123-123-1231,test department,test location

路线:


Route::post('/import-form', [ImportPatientController::class, 'importForm'])->name('import.file');

ImportPatientController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\ImportPatientModel;
use Excel;
use App\Imports\PatientImport;

use App\Http\Controllers\Controller;

class ImportPatientController extends Controller
{



  public function importUploadForm()
  {
    return view('import-form');
  }

  public function importForm(Request $request)
  {
    Excel::import(new PatientImport,$request->file2);
    return "Record are imported successfully!";
  }
}

PatientImport.php(导入文件夹)

<?php

namespace App\Imports;


use App\Models\ImportPatientModel;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;


class PatientImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new ImportPatientModel([
            'firstName'=>$row['FIRST'],
            'lastName' => $row['LAST'],
            'email' => $row['EMAIL'],
            'phone' => $row['PHONE'],
            'department' => $row['DEPARTMENT'],
            'location' => $row['LOCATION'],
        ]);
    }
}

ImportPatientModel.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class ImportPatientModel extends Model
{
    use HasFactory;

    protected $table = "imported_patients";

    protected $fillable = ['firstName', 'lastName', 'email', 'phone', 'department', 'location'];



}

导入-form.blade.php

        <form action="" method="post" enctype="multipart/form-data" action="{{route('import.file')}}">
          <img class="flowhealthlogoform" src="{{ url('images/flowhealthlogo.png')}}" />
          <h1> BACKUP LIS </h1>
            <!-- CROSS Site Request Forgery Protection -->
            @csrf


            <div class="form-group">
               <label>Upload Excel Sheet</label>
               <input type="file" class="form-control {{ $errors->has('file') ? 'error' : '' }}" name="file2" id="file">

               <!-- Error -->
               @if ($errors->has('file'))
               <div class="error">
                   {{ $errors->first('file') }}
               </div>
               @endif
           </div>


            <input type="submit" name="send" value="Submit" class="btn btn-dark btn-block">
        </form>```
4

1 回答 1

2

PHP 中的数组键区分大小写

我想如果你换个问题$row['FIRST']$row['first']解决了!

于 2021-05-15T05:45:26.293 回答