2017-01-27 2 views
0

Datei I "league/csv": "^8.2" Paket für CSV-Export/Import verwenden und ich versuche, diesen Code Inhalt in einem CSV-Datei zu exportieren:Exportanteil in CSV

public function exportCSV($id) 
{ 
    $users= User::find($id); 

    $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); 
    $csv->insertOne(\Schema::getColumnListing('users')); 
    foreach ($users as $user) { 
     $csv->insertOne($user->toArray()); 
    } 
    $csv->output('users.csv'); 
} 

Aber ich bin immer Fehler FatalErrorException: Call to a member function toArray() on boolean.

Wenn ich dd($users) mache, bekomme ich die Sammlung, nicht den booleschen Wert. Irgendeine Hilfe?

EDIT

Antwort des @Alexey Mezenin hat mir geholfen. Aber gibt es eine Möglichkeit, eine neue Spalte mit diesem Paket einzufügen? Ich habe es versucht:

$rows  = [ 
     [1, 2, 3], 
     ['foo', 'bar', 'baz'], 
     'test', 
    ]; 
$csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); 
$csv->insertAll($rows); 
$csv->output('users.csv'); 

Aber es fügt Daten in neue Zeile jedes Mal. Wie:

'1,2,3 
foo, bar,baz 
test 

ich eine neue Spalte für jedes Array haben wollen ...

EDIT 2

Ich löste es mit:

$csv->setDelimiter(';'); 

Antwort

2

Wenn Sie das Mit find() erhalten Sie eine Instanz eines User Modells, keine Sammlung. Verwenden Sie stattdessen bekommen:

$users = User::get(); 

Wenn Sie nur eine Verwendung von ID erhalten möchten, entfernen Sie die Schleife:

$user = User::find($id); 
.... 
$csv->insertOne($user->toArray()); 
+0

Thx. Es hat geholfen, aber ich habe immer noch nicht, was ich brauche ... Übrigens. Ich habe meine Frage bearbeitet! – harunB10