使用Maatwebsite找不到某些列的laravel Excel impoirtation

问题描述 投票:3回答:1

我正在尝试使用Maaatwebsite将一个excell文件上传到我的laravel 5.4.36项目中的数据库,但它没有找到一些列并反转表列结构。这是我的控制器文件:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Maatwebsite\Excel\Facades\Excel;

class DebitController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('debit');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        // ...
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // ...
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $debits = DB::table('debits')->get();
        return view('debit')->with(compact('debits'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        // ...
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        // ...
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        // ...
    }

    public function import(Request $request)
    {
        if($request->file('imported-file'))
        {
            $path = $request->file('imported-file')->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();

            if(!empty($data) && $data->count())
            {
                $data = $data->toArray();
                for($i=0;$i<count($data);$i++)
                {
                $dataImported[] = $data[$i];
                }
            }
            \App\Debit::insert($dataImported);
        }
    return back();
    }
}

这是我的模特

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Debit extends Model
{
    protected $fillable = [
        'client_name',
        'Current',
        '1_30',
        '31_60',
        '61_90',
        '>90',
        'Total',
        'Total_Pd_chqs',
        'By_30th_Nov',
        'By_5th_Dec',
        'By_15th_Dec',
        'By_20th_Dec',
        'By_31st_Dec',
        'Balance_adjusted',
        'December_Collection_tenants',
        'Status'
    ];
}

当我尝试上传具有相同列标题的excel文件是表字段时,我收到错误

     SQLSTATE[42S22]: Column not found: 1054 Unknown column 'december_collection_tenants' in 'field list' (SQL: insert into `debits` (`1_30`, `31_60`, `61_90`, `balance_adjusted`, `by_15th_dec`, `by_20th_dec`, `by_30th_nov`, `by_31st_dec`, `by_5th_dec`, `client_name`, `current`, `december_collection_tenants`, `status`, `total`, `total_pd_chqs`, `90`) values (-2500, -4500, 5000, -5500, 4500, 2500, -2500, -3000, 5000, Jane anyango, 30000, 500, Ok, 1000, 6500, 3000))

我能做错什么?

php laravel-5.4 maatwebsite-excel
1个回答
1
投票

尝试更新你的表字段看起来类似于你的可填充数组变量然后删除>表单90,因为maatwebsite excel会将其更改为_并且MySQL也将其视为其他可能是空的空间,如果你的意思是大于90然后我建议你完全写它而不是使用符号。最后,确保表字段名称中没有空格

© www.soinside.com 2019 - 2024. All rights reserved.