ในกรณีที่ต้องการใช้งานหลายฐานข้อมูล บน Laravel สามารถทำได้ตามขั้นตอนดังนี้
- เพิ่มการตั้งค่าภายใต้
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();