Cara Menggunakan MongoDB di Project Laravel

28 Oktober 2024 192x
Cara Menggunakan MongoDB di Project Laravel

Laravel x MongoDB? Ya, hal tersebut dapat dilakukan meskipun mungkin agak jarang digunakan oleh developer pada umumnya. Mengingat database yang popular untuk dipakai adalah MySQL / MariaDB. Namun, hal tersebut tidak menjadi mustahil karena bantuan dari komunitas yang mendukung hal tersebut terjadi. Pada artikel kali ini kita akan belajar bagaimana caranya menggunakan MongoDB di project berbasis Laravel. 

DISCLAIMER

  1. Pastikan teman-teman sudah memiliki VPS karena di tutorial ini saya buat dan jalankan di VPS, namun untuk setup local di PC / Laptop Anda juga bisa meskipun ada keterbatasan seperti tidak dapat diakses secara live di berbagai device sekaligus. 
  2. Jika ingin menggunakan repo gratis yang sudah saya buat dapat didownload disini: https://github.com/muhazmi/laravel-mongodb 
  3. Jika kamu menggunakan Linux di local development server, maka silahkan ikuti tutorial instalasinya disini: https://amperakoding.com/article/cara-install-mongodb-di-os-linux-ubuntu 

Langkah Langkah Instalasi

Install Ekstensi PHP untuk MongoDB

Jika menggunakan versi lain maka silahkan ganti kode di belakang php seperti dibawah ini:

sudo apt install php-mongodb -y

sudo apt install php-pear php8.2 -y
sudo apt install php-pear php8.3 -y

sudo apt-get install php8.2-mongodb -y
sudo apt-get install php8.3-mongodb -y

Verifikasi Ekstensi

Cek apakah ekstensi sudah terpasang dengan perintah:

php8.2 -m | grep mongodb
php8.3 -m | grep mongodb
sudo systemctl restart php8.2-fpm
sudo systemctl restart php8.3-fpm

Login ke Mongodb

mongosh

Buat User Baru

mongosh -u admin-mongodb -p password --authenticationDatabase admin

Menampilkan Data

use laravel-mongodb
db.products.find().pretty()

Konfigurasi .env

Sesuaikan konfigurasi seperti berikut:

DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=laravel-mongodb
DB_USERNAME=admin-mongodb
DB_PASSWORD=password

Konfigurasi Database di Laravel:

Buka file config/database.php dan tambahkan koneksi MongoDB:

'connections' => [
    'mongodb' => [
        'driver'   => 'mongodb',
        'host'     => env('DB_HOST', '127.0.0.1'),
        'port'     => env('DB_PORT', 27017),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'options'  => [
            'database' => env('DB_DATABASE', 'forge'), // Optional
        ],
    ],
],

Install Package MongoDB

composer require mongodb/laravel-mongodb

Install API di Laravel

Perintah berikut wajib diterapkan jika Anda menggunakan Laravel 11 karena secara default / bawaan Laravel 11 tidak menyediakannya.

php artisan install:api

Buat Model dan Migration / Table Product

php artisan make:model Product -m

dan isikan seperti ini di:

<?php

namespace App\Models;

use MongoDB\Laravel\Eloquent\Model;

class Product extends Model
{
    protected $connection = 'mongodb'; // Pastikan koneksi ke MongoDB
    protected $fillable = ['name', 'description', 'price'];
}

Lalu ini di migration:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description')->nullable();
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('products');
    }
};

Buat Controller Baru dengan nama ProductController

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'nullable|string',
            'price' => 'required|numeric|min:0',
        ]);

        $product = Product::create($validatedData);

        return response()->json([
            'message' => 'Product created successfully',
            'data' => $product,
        ], 201);
    }
}

 

Atur Route di api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;

Route::post('products', [ProductController::class, 'store']);

Test di Postman

Pastikan sudah menjalankan perintah:

php artisan serve

Lalu coba hit endpoint menggunakan Postman seperti ini:

URL: http://127.0.0.1:8000/api/products

Method: POST

Body: form-data, lalu isikan name, description dan price seperti di gambar berikut ini

Jika berhasil maka akan muncul seperti ini:

 

Semoga bermanfaat!

Bagikan

Artikel Terkait

Mengenal Konsep Database dan Cara Kerjanya

Mengenal Konsep Database dan Cara Kerjanya

Database merupakan salah satu hal yang penting dalam dunia teknologi informasi. Database sendiri digunakan untuk menyimpan data dan informasi yang nan...

Selengkapnya
10 Alasan Mengapa Harus Memiliki Database di dalam sebuah Bisnis

10 Alasan Mengapa Harus Memiliki Database di dalam sebuah Bisnis

Dalam era digital seperti sekarang ini, data menjadi hal yang sangat penting dalam keberlangsungan sebuah bisnis. Oleh karena itu, memiliki database m...

Selengkapnya
Cara Mudah Install SQLite di Linux

Cara Mudah Install SQLite di Linux

SQLite adalah salah satu sistem manajemen basis data yang paling populer dan ringan, sering digunakan dalam aplikasi dan proyek kecil hingga menengah....

Selengkapnya
Cara Install MongoDB di OS Linux Ubuntu

Cara Install MongoDB di OS Linux Ubuntu

MongoDB adalah database NoSQL yang populer karena performanya yang cepat dan fleksibel dalam menyimpan data yang tidak terstruktur. Bagi banyak develo...

Selengkapnya