2015-05-15 18 views
8

benim laravel 4 projesinde Excel'e ihracat uygulamayaNesne dizeye dönüştürülemedi - laravel

this documentation takip ediyorum.

Yani böyle diziden excel dosyası oluşturmak için çalışıyorum:

//$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'); 

Ama bu durum oluşturur: Yanlış yapıyorum

Object of class stdClass could not be converted to string 

?

UPDATE: Bu çalıştı

:

$data = get_object_vars($data); 

sonuçlanır:

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

Bu: ilk hata

$data = (array)$data; 

sonuçları.

+0

Yapılandırmanızla ilgili bir şeyi kaçırdığınızı düşünüyorum. Servis Sağlayıcı ve diğer adlar için 'app/config.php' dosyanızı kontrol edin. –

cevap

17

$data gerçekten bir dizi, ama objelerin kadar yapılmış.

onu yaratmadan önce diziye içeriğini dönüştürme:

$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

Nesnenizi önce bir diziye değiştirmeniz gerekebilir. export'un ne yaptığını bilmiyorum ama bir dizi beklediğini varsayalım.

Sen

get_object_vars()

kullanabilirsiniz ya Veya eğer onun basit bir nesne, sadece o typecasting yapabilirsiniz.

$arr = (array) $Object;

+0

Var_dump ($ data) ve onun bir nesnesi veya dizisi var mı? Ve hangi satırın hata ürettiğinden bahsetmediniz. 'Nesnenin sınıfı StdClass dize dönüştürülemedi' ilk etapta. –

2

Eğer stdClass nesneleri Koleksiyonu varsa, bununla deneyebilirsiniz:

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

bir satır kod içinde bu basit deneyin : -

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

Umarım yardımcı olur :)

+2

Bu doğru cevap olmalı, basitliği nedeniyle bu doğru cevap olmalıdır. Benim için çalıştı. Çok teşekkürler. –

+1

Doğruları kaçırdım .. thx! –