Explore. Grow & Outshine

Laravel

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

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();

 

Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x