Как импортировать файл Excel в базу данных в Laravel

Привет, Гурприт, снова с вами с новым материалом. Сегодня мы узнаем об импорте файла excel в базу данных с помощью пакета Laravel Excel, а затем я буду делать все это практически на ваших глазах. Иногда нам требуется вставить некоторые данные через CSV или excel файл, тогда в любом случае вы можете использовать этот пакет. Давайте перейдем к самой важной части — как его использовать.

Как я уже сказал, я научу вас импортировать данные через файл excel в базу данных, этот же пакет вы можете использовать для экспорта данных из базы данных в excel. Давайте посмотрим, как мы можем это сделать. Я просто покажу вам, как импортировать данные в excel.

Создание формы загрузки файла

Прежде всего, я буду объяснять все это прямо и предполагаю, что у вас есть предварительные знания об установке Laravel и настройке всех вещей. Потому что если я буду говорить прямо, вам потребуется меньше времени на понимание.

Прежде всего, мы создадим форму.

//You can keep this form anywhere in your blade file

<form action="{{ route('uploadusers') }}" enctype="multipart/form-data" method="POST">
                                    @csrf
                                    <div class="col-lg-12 py-3">
                                        <label for="users">Upload Users File</label>
                                        <input type="file" class="form-control" style="padding: 3px;" name="users" required />
                                        </div>
                                        <button type="submit" class="btn btn-success" name="upload">Upload</button>
                                </form>
Войдите в полноэкранный режим Выход из полноэкранного режима


Форма загрузки файлов

Создание маршрута для посещения страницы формы

Теперь нам нужно создать маршрут, чтобы мы могли перейти на страницу формы. Также при желании можно придать форме некоторый стиль, как я уже сделал на изображении. Давайте создадим веб-маршрут в файле web.php.

//for visiting the form page
Route::view('/upload-form','fileupload');

//for uploading to database
Route::post('/upload-form/fileupload',[UsersController::class,'upload'])->name('uploadusers');

//we have to create FileManagerController
Вход в полноэкранный режим Выход из полноэкранного режима

Создание контроллера

Теперь нам нужно создать контроллер, чтобы мы могли выполнять все действия, которые мы хотим сделать, я имею в виду, чтобы мы могли импортировать данные из файла excel в базу данных.

Помните, мы еще не установили пакет, давайте сделаем это, а перед этим создадим контроллер. Чтобы у нас было четкое видение того, что мы должны сделать.

php artisan make:controller UsersController
Вход в полноэкранный режим Выход из полноэкранного режима

Установка пакета (Laravel-Excel)

Теперь, наконец, мы собираемся установить пакет. У меня в голове возник небольшой конфликт по поводу названия пакета. Потому что когда мы устанавливаем этот пакет, мы используем Maatwebsite в команде, а в противном случае имя сайта — Laravel-excel. Итак, давайте посмотрим, как мы можем установить пакет.

composer require maatwebsite/excel
Вход в полноэкранный режим Выйти из полноэкранного режима

Если в Laravel 9 вышеуказанная команда не сработала, то, по их словам, вы можете использовать следующую команду.

composer require psr/simple-cache:^2.0 maatwebsite/excel
Войти в полноэкранный режим Выйти из полноэкранного режима

После установки пакета, он автоматически зарегистрируется в сервис-провайдере. Но если это не так, сделайте это вручную, это не очень сложная задача. Перейдите в config в app.php и перечислите его в массиве providers.

'providers' => [
    /*
     * Package Service Providers...
     */
    MaatwebsiteExcelExcelServiceProvider::class,
]

'aliases' => [
    ...
    'Excel' => MaatwebsiteExcelFacadesExcel::class,
]
Войти в полноэкранный режим Выйдите из полноэкранного режима

И после этого просто завершите работу, опубликовав конфиг.

php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider" --tag=config
Войти в полноэкранный режим Выход из полноэкранного режима

Создание класса импорта

После установки пакета необходимо перейти к важной части, где мы будем выполнять всю задачу. В каталоге App у вас может быть каталог imports, предоставленный пакетом. Если нет, то вы можете просто выполнить приведенную ниже команду для создания класса импорта. Потому что когда мы делаем импорт данных, мы создаем класс импорта, а когда мы делаем экспорт данных, мы создаем команду экспорта.

php artisan make:import UsersImport --model=User
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь у нас будет файл в нашей App/Imports каталог под названием UsersImports.

Я предполагаю, что у нас есть три поля в нашем excel-файле: имя, электронная почта и пароль.

<?php

namespace AppImports;

use AppModelsUser;
use IlluminateSupportFacadesHash;
use MaatwebsiteExcelConcernsToModel;

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

Вход в полноэкранный режим Выход из полноэкранного режима

Теперь я предположил, что у вас есть три поля в вашем файле excel, но их может быть больше трех, это просто пример. А также он может быть более сложным, чем этот, если это так, не забудьте поделиться своим опытом в комментариях ниже.

Давайте создадим контроллер, чтобы убедиться, что мы сможем это сделать.

Сохранение через контроллер

Мы создадим функцию в нашем уже существующем контроллере под названием «upload».

  public function upload(Request $request)
    {
        request()->validate([
            'users' => 'required|mimes:xlx,xls|max:2048'
        ]);
        Excel::import(new UsersImport, $request->file('users'));

        return back()->with('massage', 'User Imported Successfully');
    }
Вход в полноэкранный режим Выход из полноэкранного режима

Вы также можете назначить некоторые другие запросы импортированному пользователю, если хотите, и если вы также хотите прочитать, как сделать свой первый груб в Laravel, то вы можете подписаться на этот сайт, и если вы тоже являетесь Laraveler.

Заключение

Вот как вы можете импортировать пользователей или любые другие данные через excel. Это очень полезный пакет, я лично использовал его в своем фриланс-проекте. Я бы рекомендовал вам использовать его, если вы делаете то же самое в своем проекте, например, импортируете такие файлы данных, тогда вы можете легко использовать его.

Спасибо за чтение, надеюсь, это поможет вам.

The post Как импортировать файл Excel в базу данных в Laravel appeared first on Larachamp.

Оцените статью
devanswers.ru
Добавить комментарий