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?


Prasyarat

Sebelum mulai, pastikan kamu telah memiliki:


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


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.

🔗 elektranetworkvision.com

Leave a Reply

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