排队时Laravel Excel不起作用

问题描述

我有以下 laravel excel 导出:

namespace App\Admin\Exports\Items;

use App\Flare\Models\Item;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;

class ItemsExport implements FromQuery,ShouldQueue {

    use Exportable;

    public function query() {
        return Item::all();
    }
}

在此控制器操作中调用

public function export() {

    (new ItemsExport)->queue('items.xlsx')->chain([
        new ExportItemsEmail(auth()->user()),]);

    return redirect()->back()->with('success','File will be emailed to you once done.');
}

这个表有超过 5k 条记录

Horizo​​n 正确推送作业,但其中一个失败:

Maatwebsite\Excel\Jobs\AppendQueryToSheet

ArgumentCountError:函数 Illuminate\Support\Collection::get() 的参数太少,0 传递 > 在 /home/person/Documents/flare/vendor/maatwebsite/excel/src/Jobs/AppendQueryToSheet.PHP 第 96 行在 /home/person/Documents/flare/vendor/laravel/framework/src/Illuminate/Collections/Collection.PHP:407

中至少有 1 个预期

这不是您将应该对查询结果分块的大型导出进行排队的方式吗?

我必须附加一个作业,所以我不能只是存储它。 我做错了什么吗?

解决方法

避免错误的正确方法是使用 Item::query(),因为所有都将返回一个集合。