Menggunakan .env
==5.0
(Diuji pada 5.5) (Berfungsi pada 8 )
Dalam .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret
Di config/database.php
'mysql' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
Catatan: Di
mysql2
jika DB_username dan DB_password sama, maka Anda dapat menggunakanenv('DB_USERNAME')
yang disebutkan dalam.env
beberapa baris pertama.
Tanpa .env
<5.0
Tentukan Koneksi
app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database1',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database2',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Skema
Untuk menentukan koneksi mana yang akan digunakan, cukup jalankan connection()
metode
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Pembuat Kueri
$users = DB::connection('mysql2')->select(...);
Fasih
Setel $connection
variabel dalam model Anda
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Anda juga dapat menentukan koneksi saat runtime melalui setConnection
metode atau on
metode statis:
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2'); // non-static method
$something = $someModel->find(1);
$something = SomeModel::on('mysql2')->find(1); // static method
return $something;
}
}
Catatan Berhati-hatilah dalam mencoba membangun hubungan dengan tabel di seluruh database! Hal ini dimungkinkan untuk dilakukan, tetapi dapat disertai dengan beberapa peringatan dan tergantung pada database dan/atau pengaturan database yang Anda miliki.
Dari Laravel Documents
Menggunakan Beberapa Koneksi Basis Data
Saat menggunakan beberapa koneksi, Anda dapat mengakses setiap connection
melalui metode koneksi pada DB
tatapan. name
diteruskan ke connection
metode harus sesuai dengan salah satu koneksi yang terdaftar di config/database.php
. Anda file konfigurasi:
$users = DB::connection('foo')->select(...);
Anda juga dapat mengakses instans PDO dasar yang mentah menggunakan metode getPdo pada instans koneksi:
$pdo = DB::connection()->getPdo();
Tautan Berguna
- Laravel 5 beberapa koneksi database DARI
laracasts.com
- Hubungkan beberapa database di laravel DARI
tutsnare.com
- Beberapa Koneksi DB di Laravel DARI
fideloper.com