Laravel Excel 3.1 передает данные от контроллера к классу - PullRequest
0 голосов
/ 03 мая 2019

Я обновил библиотеку laravel excel (Maatswebsite) с 2x до 3.1 (работает Laravel 5.6 / php 7.1) и пытаюсь заставить мои старые данные работать (скачать экспортированный файл) и не могу понять, как передать мои $ data (что является массивом от запроса к базе данных foreach (не красноречивого) в контроллере к классу UsersExport.php ...

Если я вручную создаю коллекцию тестов (зеркалируя массив $ data) в классе:

return collect([
    [
        'name' => 'F Name 1',
        'surname' => 'Last Name 1',
        'email' => 'Email 1'
        'date_completed' => 'xx/xx/xx'
    ],
    [
        'name' => 'F Name 2',
        'surname' => 'Last Name 2',
        'email' => 'Email 2',
        'date_completed' => 'xx/xx/xx'
    ]
]);

вышеописанное прекрасно работает, файл создается и загружается при запуске:

return Excel::download(new UsersExport, 'Test.xlsx');

Но я хочу передать свой массив ($ data) из контроллера в класс и не уверен, КАК я это делаю ... Я пытаюсь заставить что-то подобное работать:

return Excel::download(new UsersExport($data), 'Test.xlsx');

После прочтения конкретных постов, которые я смог найти, я считаю, что мне нужно создать конструктор в классе, чтобы принимать мои $ data - но не уверен, как и как вернуть эти данные, если я преуспею в своем классе, принимая данные и т. Д. ... Является ли FromCollection правильным вариантом?

   private $data;

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

Ценю любую помощь .... Заранее спасибо.

1 Ответ

1 голос
/ 03 мая 2019

Ваш подход правильный. затем используйте функцию collection() для возврата этих данных.

private $data;

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

public function collection()
{
    return $this->data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...