Передача аргумента в Laravel Excel - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь передать аргумент для фильтрации данных, которые я хочу экспортировать в 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');

    }
}

При попытке это говорит, что я получаю сообщение об ошибке:

Объявление приложения \ Http \ Controllers \ Developer \Admin \ UnitExport :: collection ($ proj_id) должен быть совместим с Maatwebsite \ Excel \ Concerns \ FromCollection :: collection ()

1 Ответ

1 голос
/ 02 октября 2019

Вы не можете передать свой аргумент непосредственно в функцию сбора. Попробуйте это.

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();
    }
}
...