Giới thiệu

Xin chào anh em, mình thấy vì một số mục đích khác nhau có nhiều anh em cần kết nội nhiều databse trong một project laravel. Hôm nay mình sẽ hướng dẫn anh em.

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

Tiến hành sửa file app / config / database.php . Anh em có thể lựa chọn kết nối với nhiều loại databse ở đây mình sẽ ví dụ 2 databse Mysql

<?php
return array(

    'default' => 'mysql',

    'connections' => array(

        # Kết nối databse chính
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Database phụ thứ 2
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host2',
            'database'  => 'database2',
            'username'  => 'user2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

Vậy là anh em đã thiết lập một kết nối tới database phụ thứ 2 bây giờ làm thế nào để sử dụng nó trong code ?

Có một số cách sau :

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'):
});

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

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;
    }

}

Viết câu trả lời

Drop Images

0 Bình luận