Laravel Excel 传递参数

Laravel Excel passing argument

我正在尝试传递参数来过滤要导出到 Excel 的数据。

这是我的代码:

class UnitExport implements FromCollection
{
    public function collection($proj_id)
    {
        return Unit::where('project_id', $proj_id);
    }
}


class UnitController extends Controller
{
    public function index($proj_id)
    {

        return view('dev-admin.projects.units.index', ['proj_id' => $proj_id]);

    }

    public function unitExcelExport($proj_id)
    {

        return Excel::download(new UnitExport($proj_id), 'Unit.xlsx');

    }
}

当尝试这个时,它说我收到一条错误消息:

Declaration of App\Http\Controllers\Developer\Admin\UnitExport::collection($proj_id) must be compatible with Maatwebsite\Excel\Concerns\FromCollection::collection()

您不能将参数直接传递给您的收集函数。试试这个。

class UnitExport implements FromCollection
{
    protected $proj_id;

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

    public function collection()
    {
        return Unit::where('project_id', $this->proj_id)->get();
    }
}