Import csv file in laravel
1. Install maatwebsite via the Composer package manager
composer require maatwebsite/excel
In routes/web.php
4. Create import Section
php artisan make:import PostsImport --model=Post
recources/views/upload.blade.php
5. Create PostController
app/http/Contriller/PostController.php
composer require maatwebsite/excel
2. Then open config/app.php file and add service provider and aliase.
'providers' => [
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
3. Define Routes
In routes/web.php
Route::get('/upload','PostController@index');
Route::post('/pupload','PostController@uploadp')->name('uploadp');
4. Create import Section
php artisan make:import PostsImport --model=Post
app/Imports/PostsImport.php
<?php
namespace App\Imports;
use App\Post;
use Throwable;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\SkipsErrors;
use Maatwebsite\Excel\Concerns\SkipsFailures;
use Maatwebsite\Excel\Concerns\SkipsOnError;
use Maatwebsite\Excel\Concerns\SkipsOnFailure;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Maatwebsite\Excel\Concerns\WithValidation;
class PostsImport implements ToModel, SkipsOnError
{
use Importable,SkipsErrors, SkipsFailures;
public function model(array $row)
{
return new Post([ 'name' => $row[0] ]);
}
public function onError(Throwable $error)
{
}
}
5. Create View File
recources/views/upload.blade.php
<div class="login-form">
@if (session('success'))
<div class="alert alert-success">
{{ session('afterposts') - session('beforeposts') }} {{ session('success') }}
</div>
@endif
<form action="{{ route('uploadp') }}" method="post" enctype="multipart/form-data">
@csrf
<h2 class="text-center mt-4">Post Upload</h2>
<div class="form-group">
<input type="file" class="form-control" name="file" >
@error('title')
<div class="alert-danger">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">Upload</button>
</div>
</form>
</div>
5. Create PostController
app/http/Contriller/PostController.php
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\PostsImport;
class PostController extends Controller
{
public function index()
{
return view('upload');
}
public function uploadp(Request $request){
$beforeposts = Post::all()->count();
Excel::import(new PostsImport,request()->file('file'));
$afterposts = Post::all()->count();
return back()->with('success','Products imported.')
->with('beforeposts', $beforeposts)->with('afterposts', $afterposts);
}
}
Comments
Post a Comment