使用Laravel 5.6和Laravel Excel(maatwebsite 3.1)上传excel文件并将数据更新到数据库时遇到问题,我无法获取每一列的内容来更新数据库中的数据。
$rows
返回空
Model:
namespace App;
use App\User;
use App\MyModel;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
class DataImport implements ToCollection
{
/**
* @param array $rows
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function collection(Collection $rows)
{
dd($rows);
foreach ($rows as $row) {
$import = MyModel::where('user_id',$row[1])->first();
$import->field1= $row[2];
$import->field2= $row[5];
$import->field3= $row[3];
$import->status = 'SUCCESS';
$import->save();
}
}
}
Controller:
use Maatwebsite\Excel\Excel;
public function postImport(Request $request){
if($request->hasFile('sample_file')){
Excel::import(new DataImport ,request()->file('sample_file'));
return redirect('/import');
}
}
Excel文件:
--------------------------------------------------------------------------------
| # | USER ID | FIELD ONE | FIELD TWO | FIELD THREE | FIELD FOUR | FIELD FIVE |
--------------------------------------------------------------------------------
| 1 | 1 | 123-abc | abc-123 | 123123 | asdf | konjesh |
--------------------------------------------------------------------------------
答案 0 :(得分:0)
if($request->hasFile('sample_file')){
$getPath = Request::file('sample_file');
$data = Excel::load($getPath, function($reader){ })->get();
if(!empty($data){
Excel::import(new DataImport , $data);
return redirect('/import');
}
}
可以尝试一下吗,
答案 1 :(得分:0)
尝试先将上传的文件存储到磁盘:
0-4 mapped to 0
5-9 mapped to 5
10-14 mapped to 10, and so on.