Kami Hadir Membantu Anda Dalam Pengembangan Usaha Anda

Ketapang, Kalimantan Barat elektranetworkvision@gmail.com
Posted On June 12, 2025

Tutorial Laravel: Koneksi ke CouchDB Menggunakan PHPOnCouch

elektra_network 0 comments

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.

🔗 elektranetworkvision.com

Leave a Reply

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

Related Post

Panduan Lengkap CI/CD untuk Proyek Web Modern (Update Juni 2025)

Apa Itu CI/CD dan Mengapa Penting di 2025? CI/CD adalah singkatan dari Continuous Integration dan…

Belajar Next.js dari Nol – Part 7: Integrasi Database MongoDB, MySQL & PostgreSQL

Aplikasi web modern tidak bisa lepas dari penyimpanan data. Setelah memiliki sistem autentikasi, kini waktunya…

Pengembangan Web 2025: Tren AI, Web3, & Strategi Adaptasi

🌐 Pengembangan Web di Era AI dan Web3: Tren Esensial dan Strategi Adaptasi di 2025…