Laravel dikenal sebagai framework PHP modern yang kuat untuk membangun aplikasi web. Namun, secara bawaan Laravel menggunakan MySQL, PostgreSQL, SQLite, atau SQL Server sebagai basis data. Bagaimana jika kita ingin menghubungkan Laravel ke CouchDB, database NoSQL yang ringan dan fleksibel?
Dalam tutorial ini, kita akan membahas secara langkah demi langkah cara mengintegrasikan Laravel dengan CouchDB menggunakan library PHPOnCouch, sebuah klien PHP yang stabil untuk berkomunikasi dengan CouchDB.
Apa Itu CouchDB dan PHPOnCouch?
- CouchDB adalah database NoSQL berbasis dokumen dari Apache, yang menggunakan JSON untuk menyimpan data dan HTTP API untuk akses.
- PHPOnCouch adalah library PHP untuk mengakses CouchDB secara langsung, tanpa ORM. Ia bekerja dengan prinsip REST dan cocok untuk kebutuhan CRUD standar.
Prasyarat
Sebelum mulai, pastikan kamu telah memiliki:
- Laravel 10 atau versi terbaru
- Composer
- Server lokal seperti Laragon atau XAMPP
- CouchDB terinstal (misalnya via Docker, atau native di Windows/macOS/Linux)
Langkah 1 – Instalasi PHPOnCouch
Laravel tidak menyediakan driver native untuk CouchDB, jadi kita akan menggunakan php-on-couch
.
✅ Install via Composer:
bashSalinEditcomposer require dready92/php-on-couch
Catatan: Library ini adalah fork dari library original
PHPOnCouch
yang kompatibel dengan versi PHP terbaru.
Langkah 2 – Konfigurasi File dan Struktur
Kita akan menambahkan CouchClient
ke dalam Laravel dengan pendekatan service class manual.
📁 Buat Folder App/Services/CouchDB/
mkdir -p app/Services/CouchDB
✏️ Buat File CouchDBService.php
<?php
namespace App\Services\CouchDB;
use PHPOnCouch\CouchClient;
use PHPOnCouch\Exceptions\CouchException;
class CouchDBService
{
protected $client;
public function __construct()
{
$this->client = new CouchClient(
'http://localhost:5984', // host CouchDB
'my_database' // nama database
);
}
public function getClient()
{
return $this->client;
}
public function getAllDocuments()
{
return $this->client->include_docs(true)->getAllDocs();
}
public function createDocument(array $data)
{
$doc = (object) $data;
return $this->client->storeDoc($doc);
}
public function getDocument(string $id)
{
return $this->client->getDoc($id);
}
public function updateDocument(string $id, array $data)
{
$doc = $this->getDocument($id);
foreach ($data as $key => $value) {
$doc->$key = $value;
}
return $this->client->storeDoc($doc);
}
public function deleteDocument(string $id)
{
$doc = $this->getDocument($id);
return $this->client->deleteDoc($doc);
}
}
Langkah 3 – Gunakan di Controller Laravel
📁 Contoh CouchController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\CouchDB\CouchDBService;
class CouchController extends Controller
{
protected $couch;
public function __construct(CouchDBService $couch)
{
$this->couch = $couch;
}
public function index()
{
$data = $this->couch->getAllDocuments();
return response()->json($data);
}
public function store(Request $request)
{
$created = $this->couch->createDocument($request->all());
return response()->json($created);
}
public function show($id)
{
return response()->json($this->couch->getDocument($id));
}
public function update(Request $request, $id)
{
$updated = $this->couch->updateDocument($id, $request->all());
return response()->json($updated);
}
public function destroy($id)
{
$deleted = $this->couch->deleteDocument($id);
return response()->json($deleted);
}
}
Langkah 4 – Tambahkan Routing
✏️ Update routes/api.php
:
use App\Http\Controllers\CouchController;
Route::prefix('couchdb')->group(function () {
Route::get('/', [CouchController::class, 'index']);
Route::post('/', [CouchController::class, 'store']);
Route::get('/{id}', [CouchController::class, 'show']);
Route::put('/{id}', [CouchController::class, 'update']);
Route::delete('/{id}', [CouchController::class, 'destroy']);
});
Langkah 5 – Uji Koneksi
Gunakan Postman atau cURL untuk menguji:
GET http://localhost:8000/api/couchdb
POST http://localhost:8000/api/couchdb
GET http://localhost:8000/api/couchdb/{id}
PUT http://localhost:8000/api/couchdb/{id}
DELETE http://localhost:8000/api/couchdb/{id}
Tips Tambahan
- Gunakan validasi pada
Request
untuk keamanan. - Pertimbangkan cache atau limitasi request jika data besar.
- Pastikan CouchDB sudah mengizinkan akses CORS jika digunakan di frontend berbeda.
Kesimpulan
Integrasi Laravel dengan CouchDB memang tidak se-native seperti dengan MySQL, namun dengan pendekatan service class dan library PHPOnCouch, Anda tetap bisa membangun aplikasi CRUD skala ringan hingga menengah berbasis dokumentasi JSON dengan stabil.
Bangun Sistem Laravel Non-SQL Lebih Fleksibel
💡 Ingin integrasi Laravel dan CouchDB tanpa repot konfigurasi?
Tim Elektra Network Vision siap bantu Anda membangun sistem custom Laravel + NoSQL untuk proyek bisnis, IoT, atau big data.