将集合转换为字符串数组

时间:2017-07-24 13:51:57

标签: laravel-5 export-to-excel

我正在尝试将Laravel 5中的查询结果导出到Excel,但我收到了错误

  

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

当我使用下面的代码时:

$equipements=Equipement::all();
    $equipements=collect($equipements)->toArray();
    Excel::create('Inventaire',function($excel) use ($equipements){
        $excel->sheet('Page 1',function ($sheet) use($equipements){
            $sheet->fromArray($equipements);
        });
    })->export('xlsx');

但这不是我想要的结果,我想指定不同表中的列。有没有办法将一个集合转换为字符串数组,方法集合 - > torray返回的对象数组并不是我想要的。

1 个答案:

答案 0 :(得分:0)

$equipements发送到fromArray()方法时,您将数组传递给该方法。但是你发送了所有设备的数组,每个设备都是Equipement模型的一个实例。

要将每个设备发送到它自己的行,请使用以下代码:

Excel::create('Inventaire', function($excel) {
    $excel->sheet('Page 1', function ($sheet) {
        $equipements = Equipement::all();

        foreach ($equipements as $equipement) {
            $sheet->fromArray($equipement);
        }
    });
})->export('xlsx');

有一点需要注意的是,模型的all()方法已经返回Collection,因此无需再次collect()该数据。