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
- Import file Excel (.xlsx) ke Laravel
- Memproses data Excel ke struktur array
- Simpan data ke MongoDB dan CouchDB via Laravel
- Gunakan package Laravel Excel dan PHPOnCouch/MongoDB PHP Driver
๐ ๏ธ 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
Aspek | Rekomendasi |
---|---|
Validasi data | Pastikan struktur Excel konsisten |
Cek duplikasi | Gunakan unique key sebelum insert |
Penamaan dokumen | Gunakan _id yang unik (untuk CouchDB) |
Gunakan queue | Untuk import besar, jalankan via queue worker |
Audit data masuk | Simpan log siapa upload dan kapan |
๐งฐ Elektra Network Vision โ Integrasi Laravel + NoSQL
Kami bantu:
- Migrasi data Excel ke MongoDB dan CouchDB
- Optimasi performa insert + validasi
- UI upload data berbasis role & secure
๐ elektranetworkvision.com โ Solusi Laravel + NoSQL handal untuk aplikasi data besar dan cepat.