Laravel экспорт в Excel как экспортировать условные данные? - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь экспортировать частичные данные из моей таблицы, а не все данные, я использую Maatwebsite плагин

Я пробовал код ниже в контроллере

public function report(Request $request)
{
       
     
        $sdate  = $request->query('sdate');
        $edate  = $request->query('edate');
       
        
       
        $report = Report::whereDate('created_at', '>=', $sdate)
                                   ->whereDate('created_at', '<=', $edate)
                                   ->get();
        

        
       return Excel::download($report, 'report.xlsx');

 }

В это время я получаю пустой файл excel.

Я могу получить все данные после создания приложения / экспорта

, как показано ниже

app / export / ReportExport . php

public function collection()
{
        return Report::all();
}

но как я могу сделать это в контроллере? или как я могу отправить контроллеру данных $ report на сбор?

1 Ответ

1 голос
/ 21 июня 2020

Вы можете использовать функцию FromQuery, предоставляемую пакетом.

namespace App\Exports;

use App\Report;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;

class ReportExport implements FromQuery
{
    use Exportable;

    public function __construct($start, $end)
    {
        $this->start = $start;
        $this->end = $end;
    }

    public function query()
    {
        return Report::query()->whereDate('created_at', '>=', $this->start)
                              ->whereDate('created_at', '<=', $this->end);
    }
}

Затем вы можете вызвать его из вашего контроллера

return (new ReportExport($sdate, $edate))->download('report.xlsx');

Я не тестировал код. Так что извиняюсь, если я ошибся. Вы можете обратиться к официальной документации .

Существуют также другие методы экспорта, которые вы можете найти в документации.

...