Pada artikel kali ini akan dijelaskan bagaimana cara untuk menghubungkan program Laravel dengan beberapa database sekaligus. Dalam kasus ini saya memberi contoh menghubungkan 2 database dengan jenis berbeda yaitu MySQL dan SQL Server. Ada kalanya kita membuat program yang membutuhkan lebih dari 1 database dalam pembuatannya. Laravel sudah menyediakan cara yang cukup mudah untuk mengatasi hal tersebut.
#KONFIGURASI KONEKSI DATABASE
Langkah pertama yang perlu kita lakukan adalah membuat koneksinya terlebih dahulu. Bukalah file database.php yang terdapat di dalam direktori config. Berikut ini adalah contoh kode yang saya gunakan :'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', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST'_2, 'localhost'),
'port' => env('DB_PORT'_2, '1433'),
'database' => env('DB_DATABASE_2', 'forge'),
'username' => env('DB_USERNAME_2', 'forge'),
'password' => env('DB_PASSWORD_2', ''),
'charset' => 'utf8',
'prefix' => '',
],
Di sini seperti penjelasan saya sebelumnya, saya menggunakan database MySQL dan SQL Server di mana 'mysql' dan 'sqlsrv' merupakan nama koneksi. Silahkan membuat nama koneksi sesuka anda tidak perlu persis seperti contoh saya di atas. Saya menggunakan variabel env dengan tambahan _2 untuk membedakan koneksi database 1 dengan koneksi database 2. Dan tentu saja penamaan variabel ini tidak harus sesuai dengan contoh yang saya gunakan.
Setelah selesai melakukan konfigurasi koneksi database, langkah selanjutnya adalah melakukan konfigurasi database pada file .env seperti biasanya. Berikut ini contoh kode pada file .env :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_HOST_2=127.0.0.1
DB_PORT_2=1433
DB_DATABASE_2=homestead
DB_USERNAME_2=homestead
DB_PASSWORD_2=secret
Untuk variabel DB_CONNECTION bisa diisi bebas antara databse pertama atau database kedua. Sedangkan untuk variabel-variabel lainnya sesuaikan dengan konfigurasi database pada komputer anda seperti nama database, nama username dan password serta port yang digunakan.
#CARA PENGGUNAAN
Sampai saat ini kita sudah selesai melakukan semua konfigurasi koneksi yang diperlukan. Sekarang saya akan menjelaskan bagaimana cara penggunaannya.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql');
$something = $someModel->find(1);
$someModel_2 = new SomeModel_2;
$someModel_2->setConnection('sqlsrv');
$something_2 = $someModel_2->find(1);
}
}
Baris kode di atas adalah contoh bagaimana menerapkan multi koneksi database ini. Fungsi setConnection inilah yang digunakan untuk menghubungkan program dengan koneksi database yang telah dibuat sebelumnya. Contoh kode di atas yang pertama adalah meload model dengan nama SomeModel, menghubungkannya dengan koneksi database mysql (MySQL) dan kemudian melakukan pencarian id 1 pada model SomeModel tersebut. Demikian juga untuk baris selanjutnya, program akan meload model SomeModel_2 yang terdapat pada koneksi database 2. Menghubungkan model tersebut dengan koneksi database sqlsrv (SQL Server) dan melakukan kemudian melakukan pencarian id 1 pada model SomeModel_2.
Demikianlah penjelasan dari artikel Tutorial Laravel 5.5 - Cara Menghubungkan Banyak / Multiple Database pada Laravel ini. Anda juga dapat menghubungkan program dengan 2 database dengan jenis yang sama (misal sama-sama menggunakan MYSQL), anda hanya perlu memberikan nama koneksi yang berbeda pada konfigurasinya dan menggunakan cara yang sama untuk memanggilnya. Semoga penjelasan saya pada artikel ini dapat dihaman dan Terima Kasih.
Tutorial Laravel 5.5 - Cara Menghubungkan Banyak / Multiple Database pada Laravel
Reviewed by Donny Winarto
on
October 07, 2018
Rating:
permisi guru..
ReplyDeleteapa cara ini dpt berjalan disemua versi laravel?
Mungkin selama masih Laravel versi 5 masih bisa. Belum pernah nyoba juga sih saya :)
Deletemakasih gan bermanfaat CoretanKode.com nitip salam hehe...
ReplyDelete