2017-12-20 2 views
3

Ich versuche, eine Excel-Datei in die Datenbank in meinem Laravel 5.4.36 Projekt mit Maaatwebsite hochladen, aber es findet nicht einige Spalten und Umkehrung der Tabellenspaltenstruktur. Hier ist meine Controler-Datei:laravel Excel Impoirtation mit Maatwebsite nicht finden einige Spalten

<?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(); 
    } 
} 

und das ist mein Modell

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

Wenn ich versuche, eine Excel-Datei zu laden, die die gleichen Spaltenüberschriften sind die Tabellenfelder hat, wie ich den Fehler

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

Was könnte ich falsch machen?

+0

gut, '1_30! = 1-30 ', nicht wahr? –

+0

Das Ändern von allen zu 1_30 oder 1-30 löst es nicht – Otema

+0

Ich habe auch bemerkt, dass Räume geändert wurden, um_ – Otema

Antwort

1

Versuchen Sie, Ihre Tabellenfelder zu aktualisieren, um Ihren fill-fähigen Array-Variablen zu ähneln, dann entfernen Sie das> Formular 90, weil maatwebsite excel es zu einem _ ändert und MySQL es als etwas anderes behandelt, wahrscheinlich einen leeren Raum, wenn Sie gemeint haben größer als 90 dann würde ich empfehlen, dass Sie es vollständig schreiben anstatt mit Symbolen. Schließlich sicherstellen, dass Sie keine Leerzeichen in Ihrer Tabelle Feldnamen haben

Verwandte Themen