Чтобы импортировать файл CSV в Laravel, вы можете использовать несколько методов. Вот несколько вариантов:
-
Использование встроенной функции импорта CSV в Laravel:
Laravel предоставляет удобный способ импорта файлов CSV с помощью классаIlluminate\Support\Collection. Вы можете выполнить следующие действия:а. Сначала убедитесь, что у вас установлен пакет
illuminate/support, выполнив следующую команду:composer require illuminate/supportб. Затем создайте новый класс или метод для обработки импорта CSV. Например, вы можете создать
CsvImportControllerс помощью методаimportCsv:<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Storage; class CsvImportController extends Controller { public function importCsv(Request $request) { $path = $request->file('csv_file')->getRealPath(); $data = collect(array_map('str_getcsv', file($path))); // Process and save the data as per your requirements // For example, you can loop through the $data collection and save each row to the database // or perform any other necessary operations. } }в. В файле маршрута (
web.phpилиapi.php) определите маршрут, указывающий на методimportCsv:Route::post('/csv-import', 'CsvImportController@importCsv');д. Наконец, создайте форму с полем ввода файла для загрузки файла CSV. Действие формы должно указывать на определенный маршрут.
<form action="/csv-import" method="POST" enctype="multipart/form-data"> @csrf <input type="file" name="csv_file"> <button type="submit">Import</button> </form>При описанной выше настройке при отправке формы будет вызван метод
importCsv, и вы сможете получить доступ к загруженным данным CSV. -
Использование пакета Laravel Excel.
Другим популярным вариантом является использование пакета Laravel Excel, который предоставляет более расширенные функции для импорта и экспорта файлов Excel и CSV. Чтобы использовать этот пакет, вы можете выполнить следующие действия:а. Установите пакет с помощью Composer:
composer require maatwebsite/excelб. Создайте новый класс для обработки импорта CSV. Например, вы можете создать
CsvImportControllerс помощью методаimportCsv:<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; use App\Imports\CsvImport; class CsvImportController extends Controller { public function importCsv(Request $request) { $path = $request->file('csv_file')->getRealPath(); Excel::import(new CsvImport, $path); // The CsvImport class should implement the `WithHeadingRow` interface // and define the `collection` method to handle the import logic. // You can customize the import behavior as per your requirements. } }в. Создайте новый класс для обработки логики импорта. Например, вы можете создать класс
CsvImport:<?php namespace App\Imports; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\ToCollection; use Maatwebsite\Excel\Concerns\WithHeadingRow; class CsvImport implements ToCollection, WithHeadingRow { public function collection(Collection $rows) { // Process and save the data as per your requirements // For example, you can loop through the $rows collection and save each row to the database // or perform any other necessary operations. } }д. Определите маршрут и создайте форму, аналогичную первому методу.
Это два распространенных метода импорта файлов CSV в Laravel. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям.