Laravel Multiple DB Connections

Laravel Multiple DB Connections

|8/12/2023|꧁༺Quốc༒Hùng༻꧂

Ở bài viết này tôi xin giới thiệu 1 cách đơn giản để sử dụng 2 kết nối cơ sở dữ liệu trong Laravel.

Bài viết này sử dụng cơ sở dữ liệu với các dữ liệu khác nhau, không cần thiết để cân bằng tải (hoặc kết nối tổng hợp) giữa các cơ sở dữ liệu.

Định nghĩa kết nối Laravel Multiple DB

Bên trong tệp tin cấu hình cơ sở dữ liệu của bạn – có thể là app / config / database.php – bạn có thể định nghĩa nhiều kết nối cơ sở dữ liệu của bất kỳ loại nào. Trên thực tế, bạn có thể định nghĩa nhiều kết nối như bạn muốn. Ví dụ, nếu ứng dụng của bạn phải kéo dữ liệu từ 2 cơ sở dữ liệu MySQL, bạn có thể định nghĩa chúng :

<?php
return array(

    'default' => 'mysql',
    'connections' => array(
        # Our primary database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
        # Our secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host2',
            'database'  => 'database2',
            'username'  => 'user2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

Chúng ta có kết nối mặc định vẫn thiết lập với mysql. Điều này có nghĩa là, trừ khi chúng ta chỉ định khác, ứng dụng sẽ sử dụng kết nối mysql.

Chỉ định kết nối Laravel Multiple DB

Bây giờ chúng ta có một thiết lập kết nối cơ sở dữ liệu thứ hai – làm thế nào để chúng ta sử dụng nó trong code?

Có một vài cách.

  1. Schema

Trong Schema Builder, bạn có thể sử dụng Schema facade với bất kỳ kết nối nào. Để chỉ định kết nối để sử dụng, chỉ cần chạy phương thức connection ():

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});
  1. Query Tương tự như Schema Builder, bạn có thể định nghĩa một kết nối trên Query Builder:
$users = DB::connection('mysql2')->select(...);
  1. Eloquent

Bạn cũng có thể xác định những kết nối để sử dụng trong các model Eloquent của bạn

Một cách là thiết lập biến $connection trong model của bạn:

<?php
class SomeModel extends Eloquent {
    protected $connection = 'mysql2';
}

Bạn cũng có thể định nghĩa kết nối tại thời gian chạy thông qua phương thức setConnection.

<?php

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('mysql2');
        $something = $someModel->find(1);
        return $something;
    }
}

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

Chia sẻ:

Tin liên quan khác

Tăng Số Luồng Xử Lý PHP: Toàn Tập Tối Ưu Hiệu Năng Server
Lập Trình
5/10/2025
꧁༺Quốc༒Hùng༻꧂

Tăng Số Luồng Xử Lý PHP: Toàn Tập Tối Ưu Hiệu Năng Server

Trong ngữ cảnh phổ biến nhất hiện nay với PHP-FPM (FastCGI Process Manager), “luồng xử lý” thực chất là các tiến trình con (child processes) hay còn gọi là worker processes

Tạo Index trong SQL: Review Chi Tiết và Ví Dụ Thực Tế
Lập Trình
17/8/2025
꧁༺Quốc༒Hùng༻꧂

Tạo Index trong SQL: Review Chi Tiết và Ví Dụ Thực Tế

Index là gì, các loại phổ biến, ưu nhược điểm thực tế, so sánh khi nào nên dùng loại nào

7+ CLI Đọc & Phân Tích Ổ Cứng Linux Hiệu Quả Cho Sysadmin
DevOps
17/8/2025
꧁༺Quốc༒Hùng༻꧂

7+ CLI Đọc & Phân Tích Ổ Cứng Linux Hiệu Quả Cho Sysadmin

(CLI) không chỉ là một công cụ mà còn là một nghệ thuật. Đối với việc quản lý và chẩn đoán ổ cứng, CLI tỏ ra vượt trội hơn hẳn các công cụ đồ họa

Index trong SQL: Bí kíp tăng tốc truy vấn dữ liệu hiệu quả
Lập Trình
16/8/2025
꧁༺Quốc༒Hùng༻꧂

Index trong SQL: Bí kíp tăng tốc truy vấn dữ liệu hiệu quả

Hãy tưởng tượng Index trong sql giống hệt như mục lục ở cuối một cuốn sách dày

Chuyển Hướng Website: Bí Quyết SEO & Trải Nghiệm Người Dùng Hoàn Hảo
SEO
30/5/2025
꧁༺Quốc༒Hùng༻꧂

Chuyển Hướng Website: Bí Quyết SEO & Trải Nghiệm Người Dùng Hoàn Hảo

Một trong những kỹ thuật quan trọng nhất để đảm bảo sự ổn định, cải thiện SEO và mang lại trải nghiệm người dùng tốt nhất chính là chuyển hướng website (redirect)

Sitemap Website: Bí Mật SEO Hiệu Quả
Lập Trình
30/5/2025
꧁༺Quốc༒Hùng༻꧂

Sitemap Website: Bí Mật SEO Hiệu Quả

Sitemap Website (hay bản đồ trang web) là một tệp văn bản chứa danh sách tất cả các trang quan trọng trên website của bạn

Tối ưu hình ảnh WordPress qua file server
Tối ưu
28/5/2025
꧁༺Quốc༒Hùng༻꧂

Tối ưu hình ảnh WordPress qua file server

Tối ưu hình ảnh WordPress bao gồm các kỹ thuật như nén ảnh, thay đổi kích thước, chọn định dạng phù hợp (JPEG, PNG, WebP) và sử dụng lazy loading. Việc này giúp giảm thời gian tải trang, tăng điểm số PageSpeed Insights, cải thiện thứ hạng trên Google và mang lại trải nghiệm tốt hơn cho khách truy cập.

Cách Cấu Hình và Cài Đặt Cơ Bản Khi Clone Source Laravel Từ GitHub
Laravel
25/5/2025
꧁༺Quốc༒Hùng༻꧂

Cách Cấu Hình và Cài Đặt Cơ Bản Khi Clone Source Laravel Từ GitHub

Việc clone source code từ GitHub là bước đầu tiên để bắt đầu một dự án Laravel mới hoặc đóng góp vào một dự án hiện có