2017-12-20 40 views
3

Maaatwebsite를 사용하여 내 laravel 5.4.36 프로젝트의 데이터베이스에 Excel 파일을 업로드하려고하지만 일부 열을 찾지 못하고 테이블 열 구조를 뒤집을 수 없습니다. 여기 내 CONTROLER 파일입니다 : 나는 오류,laravel Maatwebsite를 사용하는 Excel impoirtation에서 일부 열을 찾을 수 없음

<?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' 
    ]; 
} 

입니다

 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)) 

내가 잘못 할 수 있습니까?

+0

잘 '1_30! = 1-30'이 아닙니까? –

+0

모두를 1_30 또는 1-30로 변경해도 문제가 해결되지 않습니다. – Otema

+0

공백이 _ – Otema

답변

1

당신의 fillable 배열 변수와 비슷하게 보이도록 테이블 필드를 업데이트 한 다음 maatwebsite excel이 그것을 _으로 변경할 것이기 때문에> 양식 90을 제거해보십시오. 그리고 MySQL은 이것을 또 다른 것으로 처리 할 것입니다. 90보다 크면 심볼을 사용하는 것이 아니라 전체를 사용하는 것이 좋습니다. 마지막으로 테이블 필드 이름에 공백이 없어야합니다.