Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью Laravel.
Поэтому давайте воспользуемся отличной зависимостью, которая облегчает нашу работу. Если вы хотите узнать больше о зависимости, нажмите на ссылку ниже.
Laravel Excel
Laravel Excel : простая, но элегантная обертка вокруг PhpSpreadsheet с целью упрощения экспорта и импорта.
Сначала требования к использованию библиотеки
Проверьте расширения в вашем файле php.ini
Шаг 1 - Установка зависимости.
composer require maatwebsite/excel
Если есть ошибка в composer с Laravel 9, мы можем использовать:
composer require psr/simple-cache:^1.0 maatwebsite/excel
В моем случае возникла ошибка.
Теперь зависимость была установлена правильно.
2º Шаг - Создание модели и ее миграция, чтобы мы могли проверить наш импорт. Давайте поставим "-m" для создания миграции и "-c" для создания контроллера вместе с моделью.
php artisan make:model Anime -m -c
Давайте добавим в migrate столбцы, которые мы хотим иметь в базе данных.
Schema::create('animes', function (Blueprint $table) { $table->id(); $table->string('nome'); $table->integer('episodios'); $table->timestamps(); });
Теперь добавьте в Model Animes поля в $fillable.
protected $fillable = [ 'nome', 'episodios' ];
Готовая модель и миграция завершены.
Шаг 3 - Настройка базы данных и миграция
В этой статье я буду использовать sqlite в учебных целях, но базу данных вы можете выбрать сами.
Создание базы данных sqlite
Просто создайте файл в папке базы данных и назовите его database.sqlite
В файле .env укажите, какую базу данных вы собираетесь использовать, в данной статье sqlite. Прокомментируйте следующие данные, чтобы избежать проблем с конфигурацией.
DB_CONNECTION=sqlite # DB_HOST=127.0.0.1 # DB_PORT=3306 # DB_DATABASE=laravel_excel # DB_USERNAME=root # DB_PASSWORD=
php artisan migrate
Теперь просто используйте php artisan migrate в терминале для загрузки базы данных.
Шаг 4 - Импорт файла excel в базу данных.
Naruto, 220, Naruto, Shippuden 500, Hunter x Hunter 2011, 148, One Piece, 999999
Прежде чем приступить к тестированию, я отключу CSRF, потому что я буду использовать postman для проверки валидности. Для отключения просто перейдите в app > Http > Middleware > VerifyCsrfToken и добавьте кроме "*", не забудьте включить снова при использовании в производстве, это важный механизм безопасности вашего приложения laravel.
Создание класса импорта.
php artisan make:import AnimeImport
По умолчанию класс импорта расширяет toCollection, но поскольку мы будем использовать eloquent, я изменю класс, чтобы он расширял toModel.
Или, если вы предпочитаете, вы можете использовать команду, которая создает указание модели
php artisan make:import AnimeImport --model=Anime
<?php namespace App\Imports; use Maatwebsite\Excel\Concerns\ToModel; class AnimeImport implements ToModel { public function model(array $row) { return new Anime([ 'nome' => $row[0], 'episodios' => $row[1] ]); } }
В классе импорта определим Модель, которая будет получать данные и присваивать значения своим ключам.
Поскольку у нас есть только название аниме и количество его эпизодов, мы определяем только название и эпизод и присваиваем их ряду[0] и ряду[1], если бы данных было больше, это был бы ряд[2], ряд[3] и т.д.
Создание маршрута и указание на наш контроллер
Поскольку что-то будет отправлено на обработку, будет использован метод POST
Route::post('import', \App\Http\Controllers\AnimeController::class);
Теперь наш контроллер
public function __invoke(Request $request) { $excel = Excel::import(new AnimeImport, $request->file); dd(Anime::all()); }
В этом шаге мы используем фасад Excel и метод import, первым параметром мы передаем экземпляр нашего класса import, а вторым параметром - файл, который будет импортирован.
Помните, что этот пример приведен только для демонстрации работы импорта, поскольку необходимо проверить Запрос, действительно ли отправляется файл типа excel.
Давайте проведем тест в программе postman
Используйте метод POST и в теле передайте как форму-данные, измените текст на файл и прикрепите файл excel. Поле называлось файлом.
Как мы видим, он успешно импортировал наш файл excel.
Для получения дополнительной информации обязательно обратитесь к официальной документации библиотеки.
До следующего раза, ребята, надеюсь, вам понравилось :)
21.03.2023 12:23
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из самых популярных фреймворков для веб-разработки сегодня является React.js. Если вы начинающий веб-разработчик и хотите узнать больше о React.js, это...
21.03.2023 07:56
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые делают их подходящими для различных проектов веб-разработки.
20.03.2023 14:01
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а также новые инструменты веб-скраппинга с открытым исходным кодом для их обхода.
20.03.2023 12:24
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие действия:
20.03.2023 11:15
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц. HTML обеспечивает структуру страницы CSS (визуальное и звуковое) оформление для различных устройств. Наряду с графикой и сценариями HTML и CSS являются...
20.03.2023 08:46
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?