Laravel Excel : 错误 Resource interpreted as Document but transferred with MIME

Laravel Excel : error Resource interpreted as Document but transferred with MIME

Laravel Excel 导出数据将下载空数据,只有 headers in excel sheet! 我只想使用 excel 从我的搜索中导出过滤后的数据,但它只会用 headers 下载一个空的 excel sheet!!谁能告诉我我的错误在哪里!

DealerExportSearch.php

class DealersSearchExport implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents
{
    use Exportable;

    protected $name;
    protected $email;
    protected $mobile_no;
    protected $city;

    public function __construct( $name, $email, $mobile_no , $city)
    {
        $this->name         = $name;
        $this->email        = $email;
        $this->mobile_no    = $mobile_no;
        $this->city         = $city;
    }
     
    //function select data from database
    public function collection()
    {
        return Dealer::select()->where('name', $this->name)
                                ->where('email', $this->email)
                                ->where('mobile_no', $this->mobile_no)
                                ->where('city', '=', $this->city) //i tried using the above and this also same result
                                ->get();
    }
    
    public function registerEvents(): array
    {
        return [
            AfterSheet::class    => function (AfterSheet $event) {
                $cellRange = 'A1:W1'; // All headers
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(12);
            },
        ];
    }

    //function header in excel
    public function headings(): array
    {
        return [
             'No',
             'name',
             'email',
            'mobile_no',
            'shop_name',
            'city',
            'address'
        ];
    }
}

我的控制器

public function index(Request $request)

{
 $method = $request->method();
        if ($request->isMethod('get')) {

            $name       = $request->name;
            $email      = $request->email;
            $city       = $request->city;
            $mobile_no  = $request->mobile_no;

            if ($request->has('search')) {
                $dealers = Dealer::where('name', 'LIKE', '%'.$name.'%')
                            ->where('email', 'LIKE', '%'.$email.'%')
                            ->where('mobile_no', 'LIKE', '%'.$mobile_no.'%')
                           ->where('city', 'LIKE', '%'.$city.'%')
                            ->paginate(5);
                return view('dealer.index', compact('dealers'));
            }
            elseif ($request->has('exportSearchExcel')) {
                return Excel::download(new DealersSearchExport($name ?? '', $email ?? '', $mobile_no ?? '', $city ?? ''), 'DealersSearchExcel-reports.xlsx');
            }
            else{
           $dealers = Dealer::orderBy('id', 'DESC')->paginate(5);
            return view('dealer.index', compact('dealers'));
            }
        }
    }

blade

<form action="{{ route('dealer.index') }}" method="GET"  enctype="multipart/form-data">
        @csrf
        <div class="form-group row">
            <div class="col-sm-3">
                <label for="name">Name: </label>
                <input class="form-control" name="name" value="{{ request()->input('name') }}" type="text" placeholder="The Dealer Name">
            </div>
         .....................................................................
            </div>
            <div class="col-md-12 pt-3 text-right">
                <button type="submit" name="search" class="btn btn-primary"><i class="fa fa-fw fa-search"></i> Search</button>
                <button type="submit" name="exportSearchExcel" class="btn btn-secondary text-light"><i class="fa fa-download"></i> Export Excel  </button>                
            </div>
        </div>

我的控制台没有显示任何错误,只要我按下导出按钮,它就会return这个错误并下载一个空的 xslx。

Resource interpreted as Document but transferred with MIME type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: "http://127.0.0.1:8000/dealer?_token=TTlpqFNn4hr5rwI1jSlt0d4mbtww2moO8i1WWjfn&name=&email=&mobile_no=&exportSearchExcel=".

更新

我通过将 DealerExportSearch.php 中的查询更改为我在 controller 中的相同查询来修复它然后它工作

DealerExportSearch.php

class DealersSearchExport implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents , WithMapping
{
//the above codes not changed till the collection function

    //function select data from database
    public function Collection()
    {
        return Dealer::where('name', 'LIKE', '%'.$this->name.'%')
                            ->where('email', 'LIKE', '%'.$this->email.'%')
                            ->where('mobile_no', 'LIKE', '%'.$this->mobile_no.'%')
                           ->where('city', 'LIKE', '%'.$this->city.'%')
                            ->get();

    }

 public function map($row): array{
           $fields = [
              $row->id,
              $row->name,
              $row->gender,
              $row->date_of_birth,
              $row->email,
              $row->mobile_no,
              $row->shop_name,
              $row->city,
              $row->address,
         ];
        return $fields;
    }


///below codes not changed .....