我正在关注this documentation
在我的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;
导致初始错误。
7条答案
按热度按时间au9on6nz1#
在一行代码中尝试这个简单的方法:
希望有帮助:)
c6ubokkw2#
$data
确实是一个数组,但它是由对象组成的。在创建之前将其内容转换为数组:
9njqaruj3#
您可能需要先将对象更改为数组。我不知道
export
是做什么的,但我假设它期望的是数组。您可以使用
get_object_vars()
或者,如果它是一个简单的对象,您可以只对它进行类型转换。
$arr = (array) $Object;
unguejic4#
如果您有一个stdClass对象的集合,您可以尝试以下操作:
lmyy7pcs5#
当我特灵使用另一个对象的返回值调用对象元素时,我收到了相同的错误,如;
上面的代码抛出了错误,我尝试了很多方法来修复它,比如:在另一个函数中调用这个部分
$this->array1->country
作为返回值(string)
,把它带进引号等等。我甚至在网上都找不到解决方案,然后我意识到这个解决方案非常简单。你所要做的就是用花括号把它括起来,这样你就可以用另一个对象的元素值来定位一个对象。如果任何人面对同样的问题,找不到答案,我希望这能有所帮助,因为我花了一个晚上这个简单的解决方案=)
ut6juiuv6#
这很简单,你需要做的就是这样的事情,像这样抓取你的内容
wwtsj6pe7#
toArrayDeep
对我很有效