Import data dari file Excel sangat penting untuk mengisi data awal aplikasi. Pada part ini kita fokus pada dua skenario database modern: NoSQL berbasis dokumen, yaitu CouchDB dan MongoDB, yang mulai banyak digunakan di skala enterprise dan big data.

Artikel ini dibuat dengan analisa teknis mendalam dan SEO maksimal sesuai kebutuhan developer Laravel modern.


๐ŸŽฏ Tujuan Part 12


๐Ÿ› ๏ธ 1. Instalasi Laravel Excel

composer require maatwebsite/excel

Buat import class:

php artisan make:import ProdukImport

๐Ÿงพ 2. Setup Import Class

Contoh untuk struktur data produk:

๐Ÿ“ app/Imports/ProdukImport.php

use Maatwebsite\Excel\Concerns\ToCollection;
use Illuminate\Support\Collection;

class ProdukImport implements ToCollection
{
    public function collection(Collection $rows)
    {
        foreach ($rows as $index => $row) {
            if ($index === 0) continue; // skip header

            $data = [
                'nama' => $row[0],
                'kategori' => $row[1],
                'harga' => (int) $row[2],
            ];

            // Simpan ke CouchDB atau MongoDB
        }
    }
}

๐Ÿƒ 3. Simpan ke MongoDB

a. Instal MongoDB Driver Laravel

composer require jenssegers/mongodb

Ubah koneksi di config/database.php:

'mongodb' => [
    'driver'   => 'mongodb',
    'host'     => '127.0.0.1',
    'port'     => 27017,
    'database' => 'laravel_mongo',
],

Model Mongo:

use Jenssegers\Mongodb\Eloquent\Model;

class ProdukMongo extends Model
{
    protected $connection = 'mongodb';
    protected $collection = 'produk';
    protected $fillable = ['nama', 'kategori', 'harga'];
}

Simpan di collection() import:

ProdukMongo::create($data);

๐Ÿ›‹๏ธ 4. Simpan ke CouchDB

a. Instal PHPOnCouch

composer require php-on-couch/php-on-couch

Konfigurasi koneksi:

use \PHPOnCouch\CouchClient;

$client = new CouchClient("http://127.0.0.1:5984", "produkdb");

Simpan dokumen di dalam collection():

$doc = (object) $data;
$client->storeDoc($doc);

๐Ÿ“ค 5. Buat Controller Upload

use App\Imports\ProdukImport;
use Maatwebsite\Excel\Facades\Excel;

public function import(Request $request)
{
    $request->validate([
        'file' => 'required|file|mimes:xlsx,xls',
    ]);

    Excel::import(new ProdukImport, $request->file('file'));

    return back()->with('success', 'Data berhasil diimport.');
}

๐Ÿ“ 6. Blade View Upload

<form action="{{ route('produk.import') }}" method="POST" enctype="multipart/form-data">
  @csrf
  <input type="file" name="file">
  <button type="submit">Import</button>
</form>

๐Ÿง  Tips & Best Practice

AspekRekomendasi
Validasi dataPastikan struktur Excel konsisten
Cek duplikasiGunakan unique key sebelum insert
Penamaan dokumenGunakan _id yang unik (untuk CouchDB)
Gunakan queueUntuk import besar, jalankan via queue worker
Audit data masukSimpan log siapa upload dan kapan

๐Ÿงฐ Elektra Network Vision โ€“ Integrasi Laravel + NoSQL

Kami bantu:

๐ŸŒ elektranetworkvision.com โ€” Solusi Laravel + NoSQL handal untuk aplikasi data besar dan cepat.

Leave a Reply

Your email address will not be published. Required fields are marked *