Laravel Excel 3.1导出大数据

时间:2019-05-02 14:49:58

标签: laravel laravel-excel

我需要使用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()”错误。  我什至试图将其转换为一个集合,但没有成功。有什么可能的解决方案。

3 个答案:

答案 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文件。