Laravel Excel 3.1 экспорт больших данных - PullRequest
1 голос
/ 02 мая 2019

Мне нужно экспортировать более 100 тыс. Записей в Excel из базы данных с помощью плагина Maatwebsite Laravel Excel 3.1, проблема в том, что я получаю данные в виде массива.

$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 () on array»). Я даже пытался превратить его в коллекцию безуспешно. Есть ли какое-либо возможное решение для этого.

1 Ответ

2 голосов
/ 02 мая 2019

Вы создали свой класс экспорта как 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;  
    }
}
...