Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menggunakan banyak database di Laravel

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 menggunakan env('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

  1. Laravel 5 beberapa koneksi database DARI laracasts.com
  2. Hubungkan beberapa database di laravel DARI tutsnare.com
  3. Beberapa Koneksi DB di Laravel DARI fideloper.com


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menarik kembali kata sandi yang diasinkan dari Database dan pengguna auth?

  2. PDO fetchSemua pasangan nilai kunci grup ke dalam array assoc

  3. Baris sisipkan PHP/MySQL lalu dapatkan 'id'

  4. Ubah nomor awal kenaikan otomatis?

  5. Apa arti sebenarnya dari kumpulan karakter dan susunan?