
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью Laravel.
Поэтому давайте воспользуемся отличной зависимостью, которая облегчает нашу работу. Если вы хотите узнать больше о зависимости, нажмите на ссылку ниже.
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.

Для получения дополнительной информации обязательно обратитесь к официальной документации библиотеки.
До следующего раза, ребята, надеюсь, вам понравилось :)

20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2026-2027 годах? Или это полная лажа?".

20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.