2015-05-15 10 views
8

Ich folge this documentationObjekt der Klasse stdClass kann nicht in String umgewandelt werden - Laravel

in meinem Laravel 4 Projekt Export in Excel zu implementieren.

So versuche Excel-Datei von Array wie folgt zu generieren:

//$results is taken with db query 

$data = array(); 
foreach ($results as $result) { 
    $result->filed1 = 'some modification'; 
    $result->filed2 = 'some modification2'; 
    $data[] = $result; 
} 
Excel::create('Filename', function($excel) use($data) { 

$excel->sheet('Sheetname', function($sheet) use($data) { 

    $sheet->fromArray($data); 

     }); 

})->export('xls'); 

Aber dies wirft Ausnahme:

Object of class stdClass could not be converted to string 

Was mache ich falsch?

UPDATE:

dies versucht:

$data = get_object_vars($data); 

die Ergebnisse:

get_object_vars() expects parameter 1 to be object, array given 

dieses:

$data = (array)$data; 

Ergebnisse in der Anfangsfehler.

+0

Ich glaube, Sie haben mit Ihrer Konfiguration etwas verpasst. Überprüfen Sie Ihre 'app/config.php' Datei auf Service Provider und Aliase. –

Antwort

17

$data ist in der Tat ein Array, aber es ist aus Objekten gemacht.

konvertieren deren Inhalt Array, bevor es zu schaffen:

$data = array(); 
foreach ($results as $result) { 
    $result->filed1 = 'some modification'; 
    $result->filed2 = 'some modification2'; 
    $data[] = (array)$result; 
    #or first convert it and then change its properties using 
    #an array syntax, it's up to you 
} 
Excel::create(.... 
3

Möglicherweise müssen Sie zuerst Ihr Objekt in ein Array ändern. Ich weiß nicht, was export tut, aber ich nehme an, es erwartet ein Array.

können Sie entweder

get_object_vars()

Oder wenn es ein einfaches Objekt, man kann es nur typisieren.

$arr = (array) $Object;

+0

Kann man var_dump ($ data) und sein ein Objekt oder ein Array? Und Sie haben nicht erwähnt, welche Zeile an erster Stelle den Fehler "Objekt der Klasse stdClass konnte nicht in Zeichenfolge umgewandelt werden" erzeugt. –

2

Wenn Sie eine Sammlung von stdClass Objekte haben, können Sie mit diesem versuchen:

$data = $data->map(function ($item){ 
      return get_object_vars($item); 
     }); 
13

Versuchen Sie diese einfache in einer Zeile Code : -

$data= json_decode(json_encode($data), true); 

Hoffe, es hilft :)

+2

Dies sollte die richtige Antwort sein, aufgrund seiner Einfachheit muss dies die richtige Antwort sein. Arbeitete für mich. Danke vielmals. –

+1

Ich vermisste den wahren .. thx! –

Verwandte Themen