Laravel PHP upload csv file and import to Database
Here i will tell you that how to upload csv file from given path of system where file exist in Laravel and import in database using Laravel Eloquent.
There are so many pacages available in Laravel to import excel files in database but i am going to use PHP predefined methods or functions to read excel file line by line and save records in database.
You can click here to know more about Basic File Handling in PHP
You will learn that how to open a file, read a file, write to a file, close a file, delete a file and lastly read a file line by line by clicking above url which will help you more. So you must know about file handling in PHP.
To import csv file data in database, you must have a Laravel Eloquent Model which belons to database table.
First create a products
table in database and then create a model file for product table in following path app/Product.php and put following line of code.
- namespace App;
- use Illuminate\Database\Eloquent\Model;
- class Product extends Model
- {
- public $fillable = ['name','details'];
- }
Now you will see how to read csv file using predefined csv reader and how to import its data in database. You can also print the data while importing csv data to database by using print_r
command.
Add following line of code in your routes.php
, you can put functionality in your route or you can create a function within a controller to read csv file and also importing csv file data to database its upto you.
- Route::get('read-excel',function(){
- $fileD = fopen('expertphp-product.csv',"r");
- $column=fgetcsv($fileD);
- while(!feof($fileD)){
- $rowData[]=fgetcsv($fileD);
- }
- foreach ($rowData as $key => $value) {
- $inserted_data=array('name'=>$value[0],
- 'details'=>$value[1],
- );
- Product::create($inserted_data);
- }
- print_r($rowData);
- });