Home Laravel Sử dụng nhiều cơ sở dữ liệu – Multiple DB trong Laravel

Sử dụng nhiều cơ sở dữ liệu – Multiple DB trong Laravel

by Hồ Tân Tiến

Cấu hình kết nối Database

Mặc định ở tệp config/database.php đã có sẵn mẫu các kết nối thường dùng và các thành phần cần cấu hình. Các driver và các hệ quản trị cơ sở dữ liệu tương ứng:

  • sqlite – SQLite
  • mysql – MySQL
  • pgsql – PostgreSQL
  • sqlsrv – SQL Sever

Ví dụ: Mình cần kết nối đến hai hệ quản trị cơ sở dữ liệu sử dụng SQL Sever. Mình sẽ tạo một kết nối mới dựa vào phần cấu hình mẫu của Laravel và xóa các kết nối không dùng, mình sẽ có:

'connections' => [ 'sqlsrv' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], 'sqlsrv_book' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL_BOOK'), 'host' => env('DB_HOST_BOOK', 'localhost'), 'port' => env('DB_PORT_BOOK', '1433'), 'database' => env('DB_DATABASE_BOOK', 'forge'), 'username' => env('DB_USERNAME_BOOK', 'forge'), 'password' => env('DB_PASSWORD_BOOK', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], ],

Cấu hình .env

Sau khi cấu hình thì gọi ra và đặt giá trị cho nó thôi. Thế là xong phần kết nối.

DB_CONNECTION=sqlsrv DB_HOST=113.114.115.00 DB_PORT=1433 DB_DATABASE=user DB_USERNAME=sa DB_PASSWORD=password DB_CONNECTION=sqlsrv_book DB_HOST_BOOK=115.116.117.00 DB_PORT_BOOK=1433 DB_DATABASE_BOOK=book DB_USERNAME_BOOK=sa DB_PASSWORD_BOOK=password

Sử dụng Eloquent

Sau khi tạo Model bạn thêm giá trị  protected $connection để Model  nhận chính xác cơ sở dữ liệu.

protected $connection = 'sqlsrv';

Sử dụng Query Builder

Cũng tương tự như Eloquent trước gọi dữ liệu cần xác định connection để nhận chính xác cơ sở dữ liệu.

// Thay vì $users = DB::table('users')->get(); $books = DB::table('books')->get(); // Thì sẽ $users = DB::connection('sqlsrv')->table('users')->get(); $books= DB::connection('sqlsrv_book')->table('books')->get();

 

You may also like

Leave a Comment