การเชื่อมต่อกับฐานข้อมูลมากกว่า 1 ฐานข้อมูล บน Laravel

ในกรณีที่ต้องการใช้งานหลายฐานข้อมูล บน Laravel สามารถทำได้ตามขั้นตอนดังนี้

  1. เพิ่มการตั้งค่าภายใต้ connections ในไฟล์ config/database.php
'connections' => [
    'sqlsrv1' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST_SQLSRV1', 'your-server-1'),
        'port' => env('DB_PORT_SQLSRV1', '1433'),
        'database' => env('DB_DATABASE_SQLSRV1', 'your-database-1'),
        'username' => env('DB_USERNAME_SQLSRV1', 'your-username-1'),
        'password' => env('DB_PASSWORD_SQLSRV1', 'your-password-1'),
        'charset' => 'utf8',
        'prefix' => '',
    ],
    'sqlsrv2' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST_SQLSRV2', 'your-server-2'),
        'port' => env('DB_PORT_SQLSRV2', '1433'),
        'database' => env('DB_DATABASE_SQLSRV2', 'your-database-2'),
        'username' => env('DB_USERNAME_SQLSRV2', 'your-username-2'),
        'password' => env('DB_PASSWORD_SQLSRV2', 'your-password-2'),
        'charset' => 'utf8',
        'prefix' => '',
    ],
    'sqlsrv3' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST_SQLSRV3', 'your-server-3'),
        'port' => env('DB_PORT_SQLSRV3', '1433'),
        'database' => env('DB_DATABASE_SQLSRV3', 'your-database-3'),
        'username' => env('DB_USERNAME_SQLSRV3', 'your-username-3'),
        'password' => env('DB_PASSWORD_SQLSRV3', 'your-password-3'),
        'charset' => 'utf8',
        'prefix' => '',
        'trust_server_certificate' => true,
    ],
],

หมายเหตุ การใช้ ‘trust_server_certificate’ => true เมื่อต้องการสั่งให้ไคลเอนต์ข้ามการตรวจสอบใบรับรองของเซิร์ฟเวอร์ เหมาะกับกรณีที่ server ไม่มีใบรับรองที่ถูกต้อง หรือ ระบบที่อยู่ระหว่างพัฒนา (Testing Environment)

2. เพิ่มการตั้งค่าลงในไฟล์ .env

DB_HOST_SQLSRV1=server1.example.com
DB_PORT_SQLSRV1=1433
DB_DATABASE_SQLSRV1=database1
DB_USERNAME_SQLSRV1=username1
DB_PASSWORD_SQLSRV1=password1

DB_HOST_SQLSRV2=server2.example.com
DB_PORT_SQLSRV2=1433
DB_DATABASE_SQLSRV2=database2
DB_USERNAME_SQLSRV2=username2
DB_PASSWORD_SQLSRV2=password2

DB_HOST_SQLSRV3=server2.example.com
DB_PORT_SQLSRV3=1433
DB_DATABASE_SQLSRV3=database3
DB_USERNAME_SQLSRV3=username3
DB_PASSWORD_SQLSRV3=password3

3. สร้าง Model เพื่อกำหนดการเชื่อมต่อฐานข้อมูล

โดยเปิด Terminal แล้วรันคำสั่งด้านล่าง

php artisan make:model Table1
php artisan make:model Table2
php artisan make:model Table3

จากนั้นจะมีไฟล์ Table1, Table2, Table3 ขึ้นมา ภายใต้โฟลเดอร์ Models

เปิดไฟล์ Models\Table1.php เพิ่มข้อมูลการเชื่อมต่อดังนี้

class Table1 extends Model
{
    protected $connection = 'sqlsrv1';  // ระบุชื่อการเชื่อมต่อฐานข้อมูล
    protected $table = 'table_name_for_sqlsrv1'; // ระบุชื่อของตารางในฐานข้อมูล
}

เปิดไฟล์ Models\Table2.php

class Table2 extends Model
{
    protected $connection = 'sqlsrv2';
    protected $table = 'table_name_for_sqlsrv2';
}

เปิดไฟล์ Models\Table3.php

class Table3 extends Model
{
    protected $connection = 'sqlsrv3';
    protected $table = 'table_name_for_sqlsrv3';
}

4. จากนั้นเรียกใช้งานข้อมูล

$data1 = Table1::all(); 
$data2 = Table2::all();
$data3 = Table3::all();

ผู้เขียน

Sinnapa Prasith-Rathsint
sinnapa@g.swu.ac.th