Laravel Импорт в Excel - как получить импортированных пользователей - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно импортировать пользователей из листа Excel. И все отлично, но после импорта я должен сделать еще кое-что с этими импортированными пользователями. Как я могу получить их в моем контроллере после импорта?

Я пытаюсь следовать документации Laravel Excel, но она очень крипти c: (

В любом случае у меня есть класс UserImport, как в их пример:

<?php

namespace App\Imports;

use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel
{
    /**
     * @param array $row
     *
     * @return User|null
     */
    public function model(array $row)
    {
        return new User([
           'name'     => $row[0],
           'email'    => $row[1], 
           'password' => Hash::make($row[2]),
        ]);
    }
}

и в моем контроллере у меня есть:

$import = new UsersImport();
    $import->import(request()->file('xlsfile'));
    if($import->errors()->count())
    {
        dump($import->errors());
    }
    else
    {
        echo 'Success<br>';

        dd($import);
    }

К сожалению, $ import содержит вместо моих записей это:

App\Imports\UsersImport {#372 ▼
  #output: null
  #errors: []
}

1 Ответ

0 голосов
/ 12 марта 2020

Из документации в разделе Импорт основ

Импорт в массив или коллекцию

Если вы хотите обойти проблемы ToArray или ToCollection и хотите иметь массив импортированных данных в вашем контроллер (остерегайтесь производительности!), вы можете использовать метод :: toArray () или :: toCollection ().

$array = Excel::toArray(new UsersImport, 'users.xlsx');

$collection = Excel::toCollection(new UsersImport, 'users.xlsx');

В вашем случае вы можете получить доступ к $import->toArray() напрямую. Но я не уверен. Дайте ему go.

...