我需要使用Maatwebsite Laravel excel 3.1插件从数据库中将超过10万条记录导出到Excel,问题是我将数据作为数组获取。
$data = $this->client->getData("sc/asistencia-social/informe",$request->all());
return (new ExcelExport($data))->store('myFile.xlsx'); //using FromQuery
我的ExcelExport类:
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\SerializesModels;
class ExcelExport implements FromQuery
{
use Exportable, SerializesModels;
private $data;
public function __construct($data)
{
$this->data = $data; //Inject data
}
public function query()
{
return $this->data;
}
}
实际上,我收到“在数组上调用成员函数chunk()”错误。 我什至试图将其转换为一个集合,但没有成功。有什么可能的解决方案。
答案 0 :(得分:2)
您已将导出类创建为FromQuery
导出类。而是创建一个FromArray
导出类。
注意“实现”界面和功能名称
class ExcelExport implements FromArray // this was FromQuery before
{
use Exportable, SerializesModels;
private $data;
public function __construct($data)
{
$this->data = $data; //Inject data
}
public function array(): array // this was query() before
{
return $this->data;
}
}
答案 1 :(得分:0)
有效
在查询中,删除-> get()或替换为-> paginate(100)
具有maatwebsite队列导出功能。
答案 2 :(得分:0)
您应该使用shouldQueue
将大数据导出到Excel文件。