0

我正在尝试从我的表中导出部分数据而不是所有数据,我正在使用 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文件。

创建应用程序/导出后,我能够获取所有数据

像下面

应用程序/导出/ReportExport.php

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

但我怎么能在控制器中做到这一点?或者我怎样才能将 $report 数据控制器发送到集合?

4

2 回答 2

2

您可以使用包提供的 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');

我没有测试过代码。因此,如果我犯了错误,我深表歉意。可以参考官方文档

您还可以从文档中找到其他导出方法。

于 2020-06-21T05:51:46.150 回答
1

你可以这样做。

第 1 步:在您的控制器中

$requestReport-Export Class中绑定。在调用export excel的方法中添加代码。

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

第2步:

protected $request;
public function __construct($request)
{
    $this->request = $request;
}

public function collection()
 {

  $request = $this->request  ;  
  return User::where('customer_id',$request->cId)->get();
 }
于 2021-12-08T12:31:20.217 回答