类 stdClass 的对象无法转换为字符串 - laravel

2022-08-30 16:15:43

我正在关注此文档

在我的laravel 4项目中实现导出到Excel。

所以我试图从数组生成excel文件,如下所示:

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

但这引发了异常:

  Object of class stdClass could not be converted to string

我做错了什么?

更新:

试过这个:

$data = get_object_vars($data);

这导致:

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

这:

$data = (array)$data;

导致初始错误。


答案 1

在一行代码中尝试这个简单的代码:-

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

希望它能帮助:)


答案 2

$data确实是一个数组,但它是由对象组成的。

在创建之前将其内容转换为数组:

$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(....

推荐