1. 程式人生 > >如何在 Laravel 中連接多個 MySQL 數據庫

如何在 Laravel 中連接多個 MySQL 數據庫

clas ons collation ase tco return tor ref con

第一步、定義數據庫鏈接

config/database.php

<?php
return [

    ‘default‘ => ‘mysql‘,

    ‘connections‘ => [

        # 主要數據庫連接
        ‘mysql‘ => [
            ‘driver‘    => ‘mysql‘,
            ‘host‘      => ‘host1‘,
            ‘database‘  => ‘database1‘,
            ‘username‘  => ‘user1‘,
            ‘password‘  => ‘pass1‘,
            ‘charset‘   => ‘utf8mb4‘,
            ‘collation‘ => ‘utf8mb4_unicode_ci‘,
            ‘prefix‘    => ‘‘,
        ],

        # 第二個鏈接
        ‘mysql2‘ => [
            ‘driver‘    => ‘mysql‘,
            ‘host‘      => ‘host2‘,
            ‘database‘  => ‘database2‘,
            ‘username‘  => ‘user2‘,
            ‘password‘  => ‘pass2‘,
            ‘charset‘   => ‘utf8mb4‘,
            ‘collation‘ => ‘utf8mb4_unicode_ci‘,
            ‘prefix‘    => ‘‘,
        ]
    ],
];

第二步、連接第二個數據庫

我們已經成功配置了第二個數據庫鏈接,接下來講解幾種連接的方法。

1. Schema 表結構更改

在代碼遷移時,可以使用 Schema 提供的 connection() 方法:

Schema::connection(‘mysql2‘)->create(‘some_table‘, function($table)
{
    $table->increments(‘id‘):
});

2. Query 數據庫查詢

同樣的,數據庫查詢構造器裏提供了一個 connection() 方法:

$users = DB::connection(‘mysql2‘)->select(...);

3. Eloquent 數據模型

使用 $connection 屬性來設置默認的連接:

<?php

class SomeModel extends Eloquent {

    protected $connection = ‘mysql2‘;

}

你可以可以使用 setConnection 來動態設置連接:

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection(‘mysql2‘);

        $something = $someModel->find(1);

        return $something;
    }

}

或者使用 on() 方法:

$someModel->on(‘mysql2‘)->find(1);

如何在 Laravel 中連接多個 MySQL 數據庫