Dalam artikel ini, kita akan memberikan panduan langkah demi langkah tentang cara mengatur dan menggunakan beberapa koneksi database di Laravel
Laravel adalah framework PHP populer yang terkenal karena fitur-fiturnya yang elegan dan kuat, yang menyederhanakan pengembangan aplikasi web. Salah satu fitur tersebut adalah kemampuannya untuk terhubung ke beberapa database secara mulus. Ini sangat berguna ketika kamu perlu bekerja dengan berbagai sumber data, seperti menghubungkan ke database yang berbeda untuk pengguna, produk, dan analitik. Dalam artikel ini, kita akan memberikan panduan langkah demi langkah tentang cara mengatur dan menggunakan beberapa koneksi database di Laravel, disertai contoh nyata.
Data yang berbeda sering kali milik domain atau layanan yang berbeda. Misalnya, data terkait pengguna mungkin disimpan di satu database, sementara data terkait produk disimpan di database lain. Memisahkan mereka ke dalam database yang berbeda membantu menjaga pemisahan tanggung jawab yang jelas.
Dengan mendistribusikan data kamu ke beberapa database, kamu bisa mengoptimalkan kinerja database. Misalnya, kamu bisa menggunakan database khusus untuk operasi baca berat dan lainnya untuk operasi tulis berat.
Kadang-kadang, kamu mungkin perlu terhubung ke database eksternal atau lama yang tidak sesuai dengan skema database utama kamu. Koneksi ganda memungkinkan kamu bekerja dengan sumber data ini secara efisien.
Sekarang, mari kita mulai dengan panduan langkah demi langkah.
Di Laravel, konfigurasi database dilakukan di file config/database.php
. Untuk mengatur beberapa koneksi database, kamu perlu mendefinisikan setiap koneksi di file ini.
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
// ...
],
'second_db' => [
'driver' => 'mysql',
'host' => env('SECOND_DB_HOST', '127.0.0.1'),
'port' => env('SECOND_DB_PORT', '3306'),
'database' => env('SECOND_DB_DATABASE', 'forge'),
'username' => env('SECOND_DB_USERNAME', 'forge'),
'password' => env('SECOND_DB_PASSWORD', ''),
// ...
],
// Tambahkan koneksi database lainnya sesuai kebutuhan
],
Dalam contoh ini, kita mendefinisikan dua koneksi database: mysql
(koneksi default) dan second_db
. Kamu bisa menambahkan lebih banyak koneksi sesuai kebutuhan, masing-masing dengan konfigurasinya sendiri.
Untuk menjaga kredensial database yang sensitif tetap aman, gunakan file lingkungan Laravel (.env
) untuk menyimpannya. Buka file .env
kamu dan atur variabel lingkungan untuk setiap koneksi database.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password
SECOND_DB_CONNECTION=mysql
SECOND_DB_HOST=127.0.0.1
SECOND_DB_PORT=3306
SECOND_DB_DATABASE=second_database
SECOND_DB_USERNAME=second_username
SECOND_DB_PASSWORD=second_password
Pastikan nama variabel lingkungan sesuai dengan yang didefinisikan di config/database.php
.
Selanjutnya, buat model Eloquent untuk setiap koneksi database. Kamu bisa melakukannya menggunakan perintah artisan:
php artisan make:model User -m
php artisan make:model Product -m
Perintah ini menghasilkan file model dan file migrasi untuk setiap model. Pastikan untuk menentukan koneksi dalam file model yang dihasilkan:
protected $connection = 'mysql';
protected $connection = 'second_db';
Sekarang, kamu bisa menjalankan migrasi untuk setiap koneksi secara terpisah:
php artisan migrate
php artisan migrate --database=second_db
Ini akan membuat tabel yang diperlukan di database masing-masing.
Kamu sekarang bisa melakukan query data dari beberapa database menggunakan Eloquent. Berikut adalah contoh cara mengambil pengguna dan produk dari dua database kita:
use App\Models\User;
use App\Models\Product;
// Mengambil pengguna dari database 'mysql'
$users = User::all();
// Mengambil produk dari database 'second_db'
$products = Product::all();
Laravel mengurus pengaturan routing query kamu ke database yang benar berdasarkan properti koneksi model.
Untuk mengilustrasikan kekuatan koneksi database ganda, mari kita pertimbangkan contoh nyata: membangun aplikasi multi-tenant di mana setiap tenant memiliki database sendiri. Arsitektur ini memastikan isolasi data dan skalabilitas.
Secara dinamis atur koneksi database berdasarkan tenant saat ini. Kamu bisa melakukan ini di middleware atau penyedia layanan.
Gunakan facade DB untuk mengganti koneksi selama runtime. Misalnya:
DB::connection('tenant_xyz')->table('some_table')->get();
Implementasikan logika untuk menangani manajemen tenant, seperti onboarding tenant baru dan membuat database mereka.
Dukungan Laravel untuk beberapa koneksi database membuatnya menjadi pilihan serbaguna untuk membangun aplikasi web kompleks yang memerlukan isolasi data dan skalabilitas.
Dengan mengikuti panduan langkah demi langkah ini dan memahami contoh nyata, kamu bisa memanfaatkan kekuatan beberapa database dalam proyek Laravel kamu. Baik kamu sedang membangun aplikasi multi-tenant atau perlu bekerja dengan berbagai sumber data, Laravel siap membantu. Happy ngoding!
Penulis dari artikel ini.