2016-04-12 32 views
3

ich in Google gesucht, die CSV-Datei aus Laravel zu erzeugen, und ich habe den folgenden Code gefunden:generieren CSV-Datei Laravel mit

public function download(){ 
    $headers = [ 
    'Cache-Control'  => 'must-revalidate, post-check=0, pre- check=0' 
    , 'Content-type'  => 'text/csv' 
    , 'Content-Disposition' => 'attachment; filename=galleries.csv' 
    , 'Expires'    => '0' 
    , 'Pragma'    => 'public' 
    ]; 

$list = User::all()->toArray(); 

# add headers for each column in the CSV download 
array_unshift($list, array_keys($list[0])); 

$callback = function() use ($list) 
{ 
    $FH = fopen('php://output', 'w'); 
    foreach ($list as $row) { 
     fputcsv($FH, $row); 
    } 
    fclose($FH); 
}; 

return Response::stream($callback, 200, $headers); 
} 

In dem obigen Code, ich nicht verstand

$callback = function() use ($list){...} 

wird mir bitte jemand erklären?

+0

Es ist eine [Callback-Funktion] (http zu schaffen. net/manual/de/language.types.callable.php) und diese Funktion einer Variablen zuweisen; Diese Variable wird dann als Argument an Response :: stream() übergeben und 'Response :: stream()' kann diese Funktion ausführen. –

+1

Ich empfehle dringend die Verwendung von Laravel Excel - http: // www. maatwebsite.nl/laravel-excel/docs Es bietet einen schönen Wrapper für die Funktionalität, die Sie suchen. – Anderscc

+0

danke für Ihre tolle Meinung –

Antwort

0

Sparen Sie sich eine Menge Ärger und verwenden diese Bibliothek: http://www.maatwebsite.nl/laravel-excel/docs

Es kann Ihre Daten in CSV konvertieren, Excel und alle anderen Arten von Leckereien. Es ist besonders gut mit größeren Datensätzen.

Denn es ist alles Spaß und Spiele, wenn Sie Ihre csv im selben Programm auf dem gleichen Betriebssystem öffnen. Aber sobald Ihr Kunde Libre, Open oder nur Office auf MS oder Mac benutzt, wird Ihre Welt in mehreren Ebenen in neue Tiefen der Hölle gehen.

Diese Bibliothek standardisiert csv so weit wie möglich und Sie werden es lieben.