如何在 Laravel 中连接多个 MySQL 数据库?
第一步、定义数据库链接
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); 
             
             
             
             
            