2016-07-25 8 views
0

ich mit Matlab/Excel bei Laravel CSV-Datei importieren möchten, 5.2,Validieren von CSV-Import bei Laravel

der Preis sollte integer sein, aber wenn jemand Eingangspreis als String, ich brauche es zu validieren.

Dies ist mein Code:

Excel::filter('chunk')->load($path . $filename)->chunk(1000, function($results) { 
    foreach ($results as $import_data) { 
     $validation = Validator::make($import_data->toArray(), [ 
      'code' => 'required|alpha', 
      'name' => 'alpha', 
      'number' => 'alpha', 
      'price' => 'numeric', 
      'pages' => 'numeric', 
      'delivery_id' => 'numeric' 
     ]); 
     if($validation->fails()) { 
      return back(); 
     } 

     if($binder = Binder::where('code', $import_data->code)->first()) { 
      $binder->update([ 
       'price' => $import_data->price, 
       'pages' => $import_data->pages 
      ]); 
     } else { 
      Binder::create([ 
       'code' => $import_data->code, 
       'name' => $import_data->name, 
       'number' => $import_data->number, 
       'price' => $import_data->price, 
       'pages' => $import_data->pages, 
       'delivery_id' => $import_data->delivery_id 
      ]); 
     } 
    } 
}); 

Nach dem Import csv, meine Rückkehr zurück() ist gar nicht funktioniert, der Controller noch die foreach tun, wie meine Validierung zu ermöglichen?

Antwort

0

Sie kehren von der chunk()-Methode zurück, und dann geht es weiter, um die nächste Iteration der gleichen -Methode aufzurufen, und so weiter. Ich würde vorschlagen, die ganze Sache in einen Versuch-Catch-Block zu wickeln und stattdessen eine Ausnahme zu werfen.

Edit: wie folgt aus:

try { 
    Excel::filter('chunk')->load($path . $filename)->chunk(1000, function($results) { 
     foreach ($results as $import_data) { 
      // ... 
      if($validation->fails()) { 
       throw new Exception(); 
      } 
      // ... 
     } 
    )}; 
} catch (Exception $e) { 
    return back(); 
} 
+0

so muss ich einen anderen Brocken verwenden? Ja, ich benutze versuchen fangen, aber der Versuch zu fangen nicht die Ausnahme und ich bekomme nicht die Ursache des Fehlers. –

+0

Nein, der Punkt ist, dass Sie NICHT mehr Chunks verwenden sollten. Das Problem ist, dass es weiter zum nächsten Stück geht. Ich füge meinen Beitrag zu meinem Beitrag hinzu. –