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
- 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.
- Jika ingin menggunakan repo gratis yang sudah saya buat dapat didownload disini: https://github.com/muhazmi/laravel-mongodb
- 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!
Artikel Terkait
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...
Selengkapnya10 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...
SelengkapnyaCara 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....
SelengkapnyaCara 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- Membuat Auto Complete Tag PHP pada Visual Studio Code
- Cara Mendownload Git Repository atau Sebuah Project di Github
- Cara Install PhpMyAdmin di Laragon
- Cara Mengatur Waktu dan Tanggal di MySQL Secara Otomatis Setelah Input atau Update Data
- Cara Mengaktifkan Allow Less Secure Apps Access pada Akun Google