- Langkah 1 - Menambahkan Konfigurasi Database di .env
- Langkah 2 - Mendaftarkan Multi-Connection
- Langkah 3 - Menggunakan Koneksi Kedua di Model
- Langkah 4 - Query Builder dengan Koneksi Kedua
- Kesimpulan
Halo teman-teman semuanya, dalam beberapa kasus, aplikasi membutuhkan lebih dari satu database, misalnya memisahkan data autentikasi, data transaksi, atau mengakses database lama (legacy system). Laravel sudah menyediakan fitur multiple database connection yang sangat mudah digunakan.
Berikut adalah panduan lengkap dan praktis untuk membuat koneksi dua database dalam satu proyek Laravel.
Langkah 1 - Menambahkan Konfigurasi Database di .env
Pertama, tambahkan kredensial database kedua di file .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_utama
DB_USERNAME=root
DB_PASSWORD=
DB2_CONNECTION=mysql
DB2_HOST=127.0.0.1
DB2_PORT=3306
DB2_DATABASE=database_kedua
DB2_USERNAME=root
DB2_PASSWORD=
Pastikan nama variabelnya berbeda (misal: DB2_…).
Langkah 2 - Mendaftarkan Multi-Connection
Silahkan teman-teman buka file config/database.php, lalu tambahkan konfigurasi koneksi kedua:
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
'mysql2' => [ // koneksi kedua
'driver' => 'mysql',
'host' => env('DB2_HOST'),
'port' => env('DB2_PORT'),
'database' => env('DB2_DATABASE'),
'username' => env('DB2_USERNAME'),
'password' => env('DB2_PASSWORD'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
],
Pastikan nama koneksinya mysql2 atau sesuai kebutuhan.
Langkah 3 - Menggunakan Koneksi Kedua di Model
Jika kita ingin model tertentu menggunakan database kedua, cukup tambahkan properti $connection di dalam Model, kurang lebih seperti berikut ini:
class Produk extends Model
{
// properti koneksi database
protected $connection = 'mysql2';
// properti nama table
protected $table = 'products';
}class User extends Model
{
// properti koneksi database
protected $connection = 'mysql';
}Pada contoh di atas, model Produk secara eksplisit menggunakan koneksi database kedua dengan mendefinisikan properti $connection bernilai mysql2. Dengan demikian, setiap query yang dijalankan melalui model Produk akan selalu mengarah ke database mysql2, dan tabel yang digunakan ditentukan secara manual melalui properti $table dengan nama products.
Sementara itu, model User akan menggunakan koneksi database default yang didefinisikan pada file config/database.php. Oleh karena itu, sebenarnya kita tidak wajib menambahkan properti $connection, karena Laravel secara otomatis akan menggunakan koneksi default (umumnya bernama mysql).
Langkah 4 - Query Builder dengan Koneksi Kedua
Jika kita ingin query tertentu saja menggunakan koneksi kedua, gunakan DB::connection():
-
Contoh Select
$data = DB::connection('mysql2')->table('customers')->get(); -
Contoh Insert
DB::connection('mysql2')->table('logs')->insert([ 'message' => 'Tes koneksi database 2', ]); -
Contoh Raw Query
DB::connection('mysql2')->statement('DELETE FROM temp_data');
Kesimpulan
Laravel membuat penggunaan multiple database connection menjadi sangat mudah. Cukup menambahkan konfigurasi di .env, mendaftarkannya di database.php, lalu gunakan pada model atau query builder.
Dengan struktur yang tepat, aplikasi dapat mengakses dua (atau lebih) database tanpa masalah, baik untuk integrasi sistem lama maupun sistem berskala besar.
Blog ini dibaca sebanyak 850 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...