如何在 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);

猜你喜欢

转载自www.cnblogs.com/mouseleo/p/10029948.html