多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 多站点,多数据库 ### 第一步、定义数据库链接 *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; } } ```