Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng nhiều cơ sở dữ liệu trong Laravel

Sử dụng .env> =5.0 (Đã kiểm tra trên 5.5) ( Hoạt động trên 8 )

Trong .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

Trong 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'),
],

Lưu ý: Trong mysql2 nếu DB_username và DB_password giống nhau, thì bạn có thể sử dụng env('DB_USERNAME') được đấu giá bằng .env vài dòng đầu tiên.

Không có .env <5.0

Xác định kết nối

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'    => '',
        ),
    ),
);

Lược đồ

Để chỉ định kết nối nào sẽ sử dụng, chỉ cần chạy connection() phương pháp

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

Trình tạo truy vấn

$users = DB::connection('mysql2')->select(...);

Hùng biện

Đặt kết nối $connection biến trong mô hình của bạn

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

Bạn cũng có thể xác định kết nối trong thời gian chạy thông qua setConnection hoặc on phương thức tĩnh:

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;
    }

}

Lưu ý Hãy cẩn thận về việc cố gắng xây dựng mối quan hệ với các bảng trên cơ sở dữ liệu! Điều này hoàn toàn có thể xảy ra, nhưng nó có thể đi kèm với một số cảnh báo và phụ thuộc vào cơ sở dữ liệu và / hoặc cài đặt cơ sở dữ liệu nào bạn có.

Từ tài liệu Laravel

Sử dụng nhiều kết nối cơ sở dữ liệu

Khi sử dụng nhiều kết nối, bạn có thể truy cập từng connection thông qua phương thức kết nối trên DB mặt tiền. name được chuyển đến connection phương thức phải tương ứng với một trong các kết nối được liệt kê trong config/database.php của bạn tệp cấu hình:

$users = DB::connection('foo')->select(...);

Bạn cũng có thể truy cập cá thể PDO thô, cơ bản bằng cách sử dụng phương thức getPdo trên phiên bản kết nối:

$pdo = DB::connection()->getPdo();

Liên kết hữu ích

  1. Kết nối nhiều cơ sở dữ liệu Laravel 5 TỪ laracasts.com
  2. Kết nối nhiều cơ sở dữ liệu trong laravel FROM tutsnare.com
  3. Nhiều kết nối DB trong Laravel FROM 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. kết nối ECONNREFUSED - nút js, sql

  2. Làm cách nào để hiển thị lỗi MySQL trong PHP cho một truy vấn dài phụ thuộc vào đầu vào của người dùng?

  3. Cách tốt nhất để kiểm tra xem một hàng có tồn tại trong bảng MySQL hay không

  4. SQL Performance UNION so với OR

  5. Đánh giá sản phẩm - Sửa chữa sao cho MySQL